Nginx下搭建flv视频服务器且支持视频拖动进度条播放
目前,由于Flash的流行,网络上绝大多数的微视频网站都采用了Flv格式来播放视频。
在互联网上播放视频,有两种方式,一种是文件方式,即通过HTTP协议访问视频文件,这种方式的缺点是不能从特定的帧开始播放;另外一种就是采用专门的流媒体服务器,这种方式的缺点是要搭建复杂的流媒体服务器。不过,现在有了一种集合了以上两种方式优点的一种解决方案,即通过HTTP来实现伪流媒体。本文描述的就是这样的一种解决方案。
首先配置nginx服务支持flv模块功能
⑴查看你的nginx是否已支持flv功能模块
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V //查看nginx服务支持
结果:
nginx version: nginx/0.8.24
built by gcc 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC)
configure arguments: --prefix=/usr/local/nginx --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module
分析:我的nginx版本0.8.24,http_flv_module已经开启,支持flv服务
⑵安装支持flv模块的nginx服务器:
#tar zxvf nginx-0.8.
#cd nginx-0.8.24
#./configure --prefix=/usr/local/nginx --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module //开启flv模块
#make && make install
#/usr/local/nginx/sbin/nginx //启Nginx
⑶nginx服务器配置(f文件)
server
{
listen 80;
server_name localhost;
charset utf-8;
location / {
flash swf播放器 root html;
index index.php index.html index.htm;
}
location ~ \.flv {
flv;
limit_rate_after 10m;
limit_conn one 1;
limit_rate 85k;
}
}
使用location 将 .flv的文件指向flv模块即可。
以上使用了limit_rate 是为了限速,当 flv视频下载超过10M,则限速到85K,只允许用户开1个进程,也就是先快速缓存可以播放,后面的慢慢下载。
⑷安装支持flv拖放进度条的播放器
上面三步都是安装支持nginx服务支持flv功能的,现在需要支持flv拖放进度条的播放器.
你需要有一个能够播放Flv视频的播放器,很显然,它还需要能够嵌入到网页中。目前比较
流行的,功能上也还比较完善的一个Flv播放器就是 JW FLV Media Player(也称为 jwplayer)。它的网址是:
www.longtailvideo/players/jw-flv-player/
这个播放器支持视频加入广告和视频节目单功能,
下载包里面有很全的实例和使用方式,
将包中的player.swf(如果是带有Viral插件的,就是player-viral.swf)放到你的网站内,这就是用来提供视频播放的播放器。至于包中其它的文件,都可以不要。
接下来,将播放器嵌入到你的视频播放网页中:
直接嵌入,使用Object/Embed代码嵌入:
<embed
type="application/x-shockwave-flash"
id="player2"
name="player2"
src="player.swf"
width="328"
height="200"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="file=192.168.40.135/test.flv&image=192.168.40.135/preview.jpg&autostart=false&type=http&streamer=start"
> </embed>
file:"video.flv", // FLV视频地址
type:"http", // 数据类型,本文是基于http模式的,这个必须写滴
image:"preview.jpg",// 开始播放之前的预览图
autostart:"false", // 是否自动播放
streamer:"start", // 参数为 “start”,这个参数用于传递给服务器从特定的关键帧开始播放,nginx编译了 flv 模块 所以是支持的。。
⑸添加关键帧
如果一个Flv视频要能够被拖到特定点播放,该Flv需要在其metadata中有关键帧的信息。如果你的Flv视频制作的时候没有这些信息,也是不能拖放播放的。可以使用yamdi来为你的视频加上关键帧信息 :
安装:
1 [root@localhost ~]#wget sourceforge/projects/yamdi/files/yamdi/1.4/yamdi-1./download
2 [root@localhost ~]#tar zxvf yamdi-1.
3 [root@localhost ~]#cd yamdi-1.4/
4 [root@localhost yamdi-1.4]#make && make install
使用方法:
yamdi -i source.flv -o dest.flv //原视频 输出视频
最近研究视频点播服务器的搭建方案,因项目原因笔者只能忍痛割爱舍弃专业的流媒体软件HelixServer、RED5、WMS等专业的流媒体软件当然其中还有不要钱的Darwin。按照坑爹的要求使用web服务器作为视频点播服务器。
经过前期调研发现选择Nginx也不失为一种理想的替代方案,可是网络上的资料大多不够完整和详尽且没有给出在部署过程中产生的错误相应的解决方法,所以笔者只好自己亲自动手整理和编写了一篇完整版安装手记,以供大家借鉴和参考。
一、部署前的环境准备工作
1)检查当前系统是否已经安装zlib、pcre基础软件包
rpm –qa | grep zlib ##Nginx运行需要的函数库
rpm –qa | grep pcre ##与Perl兼容的正则表达式库模块
rpm –qa | grep ssh ##openssh 支持安全的通信
2)准备安装的软体
A)nginx-1.0. ##运行主程序
B)nginx_mod_h264_streaming-2.2. ##MP4支持模块
C)nginx-accesskey-2.0.3.diff.bz2 ##资源防盗链支持模块
##wget /images/5/51/Nginx-accesskey-2.0.
D)yamdi-1.
##渐进式流支持模块(抓取视频资源关键帧实现播放时的随意拖动效果)
E)准备一个播放器
blogimg.chinaunix/blog/upfile2/100607142612.rar ##flash播放器控件
F)测试资源准备
二、部署步骤
A)安装yamdi
1、解压下载的文件tar –zxvf yamdi-1.
2、进入解压后的目录cd yamdi-1.8.
3、编译并安装 make && make install
4、使用该软件为视频添加关键帧信息实现拖动效果
具体使用方法如下yamdi -i input.mp4 -o out.mp4 (拖拽功能必须的一步呀)
B)安装Nginx
1、访问/download/下载最新版本的Nginx程序
wget /download/nginx-1.3.
2、访问de-shop下载最新版本的MP4支持模块
wget de-shop/download/nginx_mod_h264_streaming-2.2.
3、访问sourceforge下载支持流媒体拖动功能模块
wget sourceforge/projects/yamdi/files/yamdi/1.8/yamdi-1./download
.
/configure --add-module=../nginx_mod_h264_streaming-2.2.7 --with-http_ssl_module --with-pcre --with-zlib --prefix=/usr/local/nginx --with-http_flv_module --with-http_stub_status_module
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论