您的位置:首页 > 运维架构 > Linux

CentOS配置mencoder和ffmpeg flv视频转码

2013-09-07 19:39 337 查看
CentOS配置mencoder和ffmpeg flv视频转码总结
1、安装yum的fpmforge源
rpm -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm 2、安装mencoeder、ffmpeg、flvtool2、yamdi等
yum install libgcc gcc gcc-c++ libstdc++ libstdc++-devel compat-glibc compat-libstdc++-33 libevent libevent-devel

yum install ffmpeg ffmpeg-devel mplayer mencoder flvtool2 yamdi

3、执行编码的参数
mencoder /usr/local/src/video/2.rmvb -o /usr/local/src/video/2.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1
-vf scale=480:-3 -ofps 12 -srate 22050
4、为flv增加关键帧
flvtool2 -U 2.flv



yamdi -i 2.flv -o 3.flv
//注意添加了关键帧的视频为3.flv做视频转码就这么简单,结合下一篇《使用Nginx搭建flv流媒体服务器》可以搭建简单的视频服务器。 现在你可以实现:上传任意格式的视频,服务器自动转码为FLV,还能自由拖动播放是不是很酷?!~

使用Nginx搭建flv流媒体服务器
1、Nginx编译

要使nginx支持flv,在编译时应添加编译参数,启用flv模块
--with-http_flv_module如果你已经安装了nginx,但又不知道是否启用了flv模块,可以使用如下命令查看:

[root@yufei ~]# /usr/local/nginx/sbin/nginx -V

nginx: nginx version: nginx/1.0.4

nginx: built by gcc 4.1.2 20080704 (Red Hat 4.1.2-50)

nginx: TLS SNI support disabled

nginx: configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_sub_module --with-http_realip_module可以看到我的nginx版本为 1.0.4,其中已经开启了 http_flv_module
2、Nginx配置

要使nginx可以支持flv拖动还需要在站点配置中开启,如下:
server

{

listen 80;

server_name video.uenu.com;

root /www/users/video.uenu.com;

charset utf-8;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
limit_rate_after 10m; # 下载10M 后开始限速

limit_rate 512k; # 将速度限制为5121k/s

location ~ \.flv

{

flv;

}

}使用location 将 .flv的文件指向flv模块即可。
以上使用了limit_rate 是为了限速,当 flv视频下载超过10M,则限速到512K,也就是先快速缓存可以播放,后面的慢慢下载。
3、常见问题

经过以上配置之后也许你的FLV视频还不能正常播放,还有几个问题需要注意:
3.1、FLV没有metadata关键帧数据

可以使用yamdi或flvtool2为你的flv视频添加关键帧
yamdi -i source.flv -o dest.flv或
flvtool2 -U source.flv3.2、添加了关键帧却依然不能拖动,播放器设置

此时要看你使用的flv播放器是否支持,你应该选择一个支持拖动的flv播放器,如:jw player,如果你没有也可以从这里下载 jwplayer.zip
在配置播放器时有两个参数比较重要,如果配置不正确,也可能导致不能拖动:
file:"video.flv", // FLV视频地址

type:"http", // 数据类型,一定要配置正确,否则不能正常拖动,我就是这个参数没设置,郁闷了半天,无法拖动

image:"preview.jpg",// 开始播放之前的预览图

autostart:"false", // 是否自动播放

streamer:"start", // 参数为 “start”,这个参数用于传递给服务器从特定的关键帧开始播放,nginx编译了 flv 模块 所以是支持的。。至此,我在配置FLV视频拖放遇到的问题,都解决了。可以爽爽的拖动了。希望你也一样!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: