[转]linux下的fms2流媒体服务器搭建六部曲之五-----flv播放器制作篇

简介:
 很多人也许苦于找不到一个稍微简单而又完整的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;
 };
 };


    本文转自 OldHawk  博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2007/10/12/921992.html,如需转载请自行联系原作者





相关文章
|
16天前
|
存储 编解码 应用服务中间件
使用Nginx搭建流媒体服务器
本文介绍了流媒体服务器的特性及各种流媒体传输协议的适用场景,并详细阐述了使用 nginx-http-flv-module 扩展Nginx作为流媒体服务器的详细步骤,并提供了在VLC,flv.js,hls.js下的流媒体拉流播放示例。
90 1
W9
|
21天前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
71 1
|
1月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
24天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
31 4
|
27天前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
52 4
|
26天前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
2月前
|
监控 Linux Shell
|
26天前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
2月前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
64 5
Linux系统之安装Ward服务器监控工具
|
1月前
|
安全 算法 Linux
Linux 服务器还有漏洞?建议使用 OpenVAS 日常检查!
在数字化时代,Linux 服务器的安全至关重要。OpenVAS 是一款优秀的开源漏洞扫描工具,可以帮助及时发现并修复服务器中的安全隐患。本文将介绍 OpenVAS 的主要功能、使用方法及应对漏洞的措施,帮助用户加强服务器安全管理,确保企业数字化安全。
52 7