linux下的fms2流媒体服务器搭建六部曲之五:flv播放器制作篇
2010年01月03日
很多人也许苦于找不到一个稍微简单而又完整的flv播放器,我刚开始也找了很久找不到,后来干脆叫朋友帮忙做了个界面,然后自己添加代码做了个,感觉还可以,这里我不敢独享,把源码公开给各位参考一下。
要做flv播放器,首先你要明白fms2的工作目录,它的工作目录都在安装目录的applications目录下,你需要新建一个目录作为自己的工作目录,比如我新建了gdrc,然后在gdrc里面新建一个streams目录(这个目录名不能改变),这样,在streams下的所有子目录都是你的应用了。默认是_definst_,我为了好管理自己建了video放置视频flv文件,再建audio放置音频,这样我的目录结构就是:applications/gdrc/streams/video、applications/gdrc/streams/audio、applications/gdrc/streams/_definst_。在上一篇中提到的格式转换转换的所有flv文件就是放在applications/streams/video目录下。
然后,来看看我的flv播放器吧,我是用flash8开发的,只需要几个简单的组件,视频组件、播放按钮、暂停按钮、停止按钮、时间轴再加下面的代码就是一个flv播放器,在第一祯写上下面的代码:
stop();
var play_status = false;//视频播放标记,true-正在播放;false-没有播放
var connect_url = "rtmp://172.16.1.2/gdrc/video";//连接方式rtmp,注意这个连接的后面/gdrc/video跟上面提到的flv目录applications/gdrc/streams/video是对应的。
var flv = stream;//动态播放flv,该参数名对应外面的参数名比如play.swf?stream=a表示播放a.flv,参数不需要.flv后缀名
var nc:NetConnection = new NetConnection();
var ns:NetStream;
nc.connect(connect_url);
var streamLength;//flv文件长度
bt_pause._visible = false;//设置暂停按钮不可见
var startBF = 2;//开始缓冲秒数
var mainBF = 6;//空时缓冲秒数
//初始化
initStreams = function(){
ns=new NetStream(nc);
ns.setBufferTime(startBF);
video.attachVideo(ns);//把ns附给video视频组件
ns.onStatus = Onstatus;//动态缓冲
};
//动态缓冲,缓冲区满时为3秒,空的时候为10秒
function Onstatus(infoObject:Object){
trace(infoObject["code"]);
if(infoObject["code"] == "NetStream.Buffer.Full"){
ns.setBufferTime(startBF);
}
if(infoObject["code"] == "NetStream.Buffer.Empty"){
ns.setBufferTime(mainBF);
}
}
//测试连接
nc.onStatus = function(info) {
trace(info.code);
switch (info.code) {
case "NetConnection.Connect.Success":initStreams();break;
}
}
//缓冲
function checkBufferTime(ns:NetStream):Void{
var bufferPct:Number = Math.min(Math.round(ns.bufferLength/ns.bufferTime*100), 100);
if(isNaN(bufferPct)){
bufferPct = 0;
}
buffer_txt = "缓冲:"+bufferPct+"%";;
};
//获得文件长度,这个长度的获取需要服务器端的支持,要在fms2服务器端编写main.asc,后面会给出
function FileLength() {
this.onResult = function(retVal) {
streamLength = retVal;
};
};
//播放
doPlay = function(){
if(play_status == false){
bar.ball._x = 0;
play_status = true;
ns.play(flv);
//播放进度条
bar.onEnterFrame=function(){
nc.call("getFileLength", new FileLength(), flv);
var nowPlayPercent=Math.round(ns.time/streamLength*100);
if(isNaN(nowPlayPercent)){
bar.ball._x = 0;
}
else{
bar.ball._x = nowPlayPercent*490/100;
}
if(nowPlayPercent==99){
play_status = false;
bar.ball._x = 0;
bt_play._visible = true;
bt_pause._visible = false;
//ns.close();
delete this.onEnterFrame;
}
};
//缓冲提示
var buffer_interval:Number = setInterval(checkBufferTime, 100, ns);
}
else{
ns.pause();
}
};
//暂停
doPause = function(){
ns.pause();
};
//停止
doStop = function(){
play_status = false;
bar.ball._x = 0;
//ns.seek(0);
//ns.pause(true);
ns.close();
};
//开始播放
playNow.onRelease=function(){
bt_play._visible = false;
bt_pause._visible = true;
doPlay();
};
//播放按钮
bt_play.onRelease=function(){
bt_play._visible = false;
bt_pause._visible = true;
doPlay();
};
//暂停按钮
bt_pause.onRelease=function(){
bt_play._visible = true;
bt_pause._visible = false;
doPause();
};
//停止按钮
bt_stop.onRelease=function(){
bt_play._visible = true;
bt_pause._visible = false;
doStop();
};
main.asc,放置到fms2安装目录的applications/gdrc目录下
load("components.asc");
application.onAppStart = function() {};
application.onConnect = function(client) {
application.acceptConnection(client);
client.getFileLength = function(filename) {
var tlen = Stream.length(filename);
return tlen;
};
};
发表评论
-
staf
2012-01-20 09:50 832staf 2010年06月02日 参与的项目正好用了st ... -
几款引擎比较:BigWorld,Unreal,CryEngine等
2012-01-20 09:50 763几款引擎比较:BigWorld,Unr ... -
『vivizhyy』SD2.0 (来源于孟岩讲座)
2012-01-20 09:50 444『vivizhyy』SD2.0 (来源于 ... -
移植libjingle v0.5x for IOS(iphone device + iphone simulator)
2012-01-20 09:49 663移植libjingle v0.5x for IOS(iphon ... -
RabbitVCS : TortoiseSVN 的替代者
2012-01-20 09:49 784RabbitVCS : TortoiseSVN 的替代者 2 ... -
规章制度
2012-01-19 14:55 588规章制度 2010年07月26日 考勤制度 1 ... -
幼儿园管理之“三贴近”
2012-01-19 14:55 608幼儿园管理之“三贴近 ... -
浅析幼儿园如何生存与发展
2012-01-19 14:55 614浅析幼儿园如何生存与发展 2010年06月29日 浅析幼 ... -
幼儿园生存与发展的报告
2012-01-19 14:55 601幼儿园生存与发展的报告 2010年06月29日 社会主 ... -
对民办幼儿园管理的几点思考
2012-01-19 14:55 557对民办幼儿园管理的几点思考 2011年07月13日 民办 ... -
OpenGL函数参考(中文版)转载
2012-01-17 04:38 1092OpenGL函数参考(中文版)转载 2011年01月17日 ... -
OpenGl函数解释(转载)
2012-01-17 04:38 369OpenGl函数解释(转载) 2011年03月11日 第 ... -
OpenGL开发库的详细介绍
2012-01-17 04:38 462OpenGL开发库的详细介绍 ... -
OpenGL总结
2012-01-17 04:38 736OpenGL总结 2010年11月24日 OpenGL学 ... -
opengl
2012-01-17 04:38 655opengl 2011年02月19日 OpenGL总结 ... -
简单学习FMS+PHP视频聊天室
2012-01-16 03:31 967简单学习FMS+PHP视频聊天室 2010年04月02日 ... -
外部FLV影片的控制
2012-01-16 03:31 383外部FLV影片的控制 2010年08月02日 有两种方式 ... -
FMS_api
2012-01-16 03:31 270FMS_api 2010年03月11日 //====== ... -
FlashCom(FMS)
2012-01-16 03:31 383FlashCom(FMS) 2009年11月26日 Fl ...
相关推荐
在Linux环境下,构建一个FMS(Flash Media Server)的替代品——fms2流媒体服务器是许多开发者和网络管理员的任务之一。本篇文章将专注于fms2流媒体服务器搭建过程中的一个重要环节:mencoder的安装。mencoder是...
【流媒体服务器——FMS3教程】 在信息技术领域,流媒体服务器扮演着至关重要的角色,它们使得音频、视频等多媒体内容能够实时传输到用户的设备上,无需等待整个文件下载完毕。Adobe Flash Media Server(FMS)是...
FMS4.5破解版流媒体服务器FlashMediaServer4.5(文件较大分4个包) FMS是用于用户之间相互通讯的新平台。 它集成了Flash多媒体交互的特性,又添加了实时音频和实时数据流等新特色。 FlashMediaServer4.5资源比较难找带...
本篇文章将深入探讨“全套FMS流媒体服务器工具集”中的关键组件及其作用。 首先,我们来了解`flvcheck`工具。FLV是一种常见的Flash视频格式,flvcheck用于检查FLV文件的完整性和质量。它能分析文件结构,检测错误,...
《全套FMS流媒体系统管理与开发文档中文版》涵盖了Adobe Flash Media Server(FMS)的全面知识,是深入理解和操作这一流媒体平台的重要资源。本文将深入解析这些文档所包含的关键知识点,帮助读者掌握FMS的核心技术...
流媒体服务器FMS3.5 sn:1373-5465-5574-9110-6240-7230
FMS4.5破解版流媒体服务器FlashMediaServer4.5(文件较大分4个包) FMS是用于用户之间相互通讯的新平台。 它集成了Flash多媒体交互的特性,又添加了实时音频和实时数据流等新特色。 FlashMediaServer4.5资源比较难找带...
在IT行业中,流媒体技术是实现在线视频和音频传输的关键技术之一,而Adobe的Flash Media Server(FMS)就是一种广泛使用的流媒体服务器解决方案。本文将深入探讨如何利用FMS作为流媒体服务器,进行实时通信视频聊天...
总结来说,FLV播放器是处理FLV格式视频的关键工具,它们利用Flash技术和JavaScript实现丰富的交互功能,并可能依赖于FMS这样的服务器平台来提供流媒体服务。随着技术的发展,尽管Flash逐渐淡出舞台,但FLV格式仍然在...
RED5开源FLASH流媒体服务器是一种类似Adobe Flash Media Server (FMS)的解决方案,它提供了实时流传输服务,支持多种媒体格式,并且完全免费且开放源码。RED5由Java编写,因此具有跨平台的特性,可以在运行Java环境...
在信息技术领域,播放器FMS2全称为Flash Media Server 2,是由Adobe公司推出的流媒体服务器软件。它主要用于处理和分发实时音频、视频内容,以及交互式的富媒体应用程序。FMS2是FMS系列的一个重要版本,对于理解和...
Nginx-RTMP流媒体服务器是基于Nginx的一个扩展模块,用于处理实时传输协议(RTMP)的流媒体内容。它为广播者提供了一个高效且可扩展的平台来分发视频和音频流,广泛应用于在线直播、视频会议、远程教育等场景。OBS...
【网博Flash流媒体直播系统 v1.0_fms_live2】是一款专为Web平台设计的实时流媒体直播解决方案,其核心是利用Adobe Flash Media Server(FMS)技术,为用户提供高质量、低延迟的视频直播服务。这个压缩包包含的是该...
搭建FMS视频直播系统涉及到多个步骤,主要包括安装Flash Media Server (FMS),配置电脑IP,设置网络摄像机推流,以及使用网页播放器播放视频流。以下是对这些步骤的详细说明: 1. **准备工作**: - 首先,确保你有...
搭建流媒体服务器是一个复杂但有趣的过程,特别是在软件开发领域。本文将主要介绍如何利用Red5和FFMpeg这两个开源工具来构建一个在线的Flash流媒体分享平台。 Red5是一款基于Java的开源Flash流媒体服务器,它能替代...
【FMS服务器端加密】是针对使用FMS(Flash Media Server)进行流媒体服务时,为确保内容安全而采取的一种重要技术措施。FMS,全称为Adobe Flash Media Server,是Adobe公司开发的一款强大的流媒体服务器软件,广泛...
【FMS 服务端】是基于Adobe Flash Media Server(FMS)技术的一种专业级流媒体服务器,主要用于实现视频流的推送、分发和播放。在本文中,我们将深入探讨FMS服务端的核心功能、工作原理以及它在直播和点播服务中的...
总的来说,配置FLEX流媒体服务器涉及多个环节,包括Java环境的搭建、Red5服务器的安装与配置、以及Flex开发工具的安装和使用。通过这些步骤,我们可以构建一个稳定、高效的流媒体服务平台,为用户提供流畅的多媒体...