ffserver配置文档以及自己理解
2014-08-14 13:48
253 查看
ffserver与x264
最近打算学习h264,用windows版的git把x264的整个开源工程下载下来了,打算去看一下,同时尽量多做一些实践运用,这个工程应该和介绍h264的标准文档结合起来看,其中涉及很多图像处理的专业和技术性问题,涉及linux和一些数学知识(离散余弦变换DCT,傅里叶变换等)的运用,我对linux和这些数学知识都比较陌生,看来要花很多时间去学习了。windows版的git我使用的是msgit,在http://code.google.com/p/msysgit/downloads/list下载,安装后在Git Bash使用命令git clone git://git.videolan.org/x264.git下载开源工程。
在linux下使用ffplay播放视频时,需要安装sdl库,要让sdl支持ffplay,又要先安装xorg-dev。安装xorg-dev的方法是在liunx终端输入sudo apt-get install xorg-dev(ubuntu发行版)
ffserver是ffmpeg开源工程的一部分,主要用于把经过ffmpeg程序格式转换和编码后的数据(包括视频、音频、字幕、元数据等)流化,将数据封装在NAL包中便于网络传输,目前支持TCP和RTP协议。
ffserver的配置文件如下:
[xhtml]
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -
# Suppress that if you want to launch ffserver as a daemon.
NoDaemon
<Feed feed1.ffm>
File /tmp/feed1.ffm //作为缓冲文件存在,编码后的文件放在这个文件里面
FileMaxSize 200K
</Feed>
<Stream test.flv>
Feed feed1.ffm //Feed 作为关键字,这种的文件还需要ffmpeg重新编码再输出给Feed1.ffm
Format flv
StartSendOnKey
</Stream>
<Stream cloudTest.flv>
File "/路径/cloud.flv" //file 作为关键字,这种文件不需要编码,ffmpeg可以直接进行播放, 需要有路径
Format flv
</Stream>
<Stream stat.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
<Redirect index.html>
URL http://www.ffmpeg.org/ </Redirect>
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -
# Suppress that if you want to launch ffserver as a daemon.
NoDaemon
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 200K
</Feed>
<Stream test.flv>
Feed feed1.ffm
Format flv
StartSendOnKey
</Stream>
<Stream cloudTest.flv>
File "cloud.flv"
Format flv
</Stream>
<Stream stat.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
<Redirect index.html>
URL http://www.ffmpeg.org/ </Redirect>
打开linux下的一个终端(相当于打开windows下的一个命令行窗口),进入ffmpeg工程的目录,输入./ffserver -f doc/ffserver.conf &
按回车,就把ffserver启动了,如果启动不了,可以改一下ffserver.conf 文件中的端口号配置试一下。
这时在浏览器地址栏输入http://localhost:8090/stat.html就可以看到打开的ffserver的概况,就现在这个配置文件而言,从这个网页上可以看到有两个流被ffserver输出,一个是test.flv,一个是cloudTest.flv,其中test.flv流需要ffmpeg先把数据编码放在/tmp/feed1.ffm文件中,然后ffserver把feed1.ffm文件中的数据流化成test.flv;而cloudTest.flv流则是最简单的,ffserver直接把本地文件cloud.flv流化为cloudTest.flv,其中不需要ffmpeg参与格式转换和编码,所以这个流比test.flv流要流畅很多
再打开一个linux终端,在其中输入./ffplay http://localhost:8090/cloudTest.flv就可以直接播放视频文件了。但是输入./ffplay http://localhost:8090/test.flv则访问不了,因为这时ffmpeg还没有开始编码数据,这时tmp/feed1.ffm文件都不存在。
再打开一个linux终端,在其中输入./ffmpeg -i dog.avi http://localhost:8090/feed1.ffm,同时在另一个终端输入./ffplay http://localhost:8090/test.flv,这时才能访问这个流,观看视频的时候会发现视频播放的很不流畅
ffserver.conf文件有几个特别关键的配置,一个是输出流的格式,目前的格式是flv,如果是avi或者asf就不行,就访问不了输出流,其他的格式还没有试过;一个是FileMaxSize,如果它小于了本地文件dog.avi文件的大小,则只能播放dog.avi文件的一部分
此外,ffserver还能流化摄像头实时采集的视频,但我还没尝试过。
自己理解
首先ffserver.conf 中分为
两个口 :输入口( input )和输出口(Feed1..ffm)
输入是 <Stream > 输出口 <Feed feed1.ffm>
两种input,一种是FIle(已经编码好的文件) , 一种是Feed(给Feed1.ffm提供实时流)
步骤:
1、配置ffserver.conf
2、运行 ffserver -f doc/ffserver.conf ,此时可以通过浏览器查看 http://127.0.0.1:8090/stat.html,查看输出的文件
3、如果是查看文件的,直接ffplay http://127.0.0.1:8090/cloudTest.flv 文件就可以cloudTest.flv (stream的名字,而不是文件的名字)
如果是查看的Feed的,需要ffmpeg -i /路径/文件 http://127.0.0.1:8090/feed1.ffm //给缓冲区填充数据,最后ffplay进行播放
NoAudio
Strict -1
相关文章推荐
- ffserver.conf配置小解以及小小测试应用
- Weblogic配置jms服务文档,是自己总结网上搜集到的资料以及自己亲自动手配置测试的总结。
- server 2003 stmp服务器简单配置 以及.net 下发送邮件
- 获取当前打开Word文档的名字和路径以及取消自己添加的目录菜单
- VisualSVN Server以及TortoiseSVN客户端的配置和使用方法
- server2008实验之八 DNS、IIS的服务器安装以及DNS服务器的配置
- ffserver 的配置
- VS2005 strong name and the SQl Server 2005 Sample bug (号召大家学新东西一定不要自己去抠,应该从MS的Sample和文档开始,看英文的原文)
- ubuntu nfs配置 以及mount.nfs:access denied by server while mounting问题解决
- [ZZ]VisualSVN Server以及TortoiseSVN客户端的配置和使用方法
- syslog server配置与logrotate的配置与理解
- ffserver的配置及使用
- 安装配置 AWStats 的文档以及遇到的问题
- 配置config.bib的注意事项以及错误分析——自己都要顶!
- 自己的linux系统安装以及软件配置
- ffserver配置
- 深入理解及配置ISA Server 2006访问规则
- ubuntu 下c和c++环境配置以及man文档的安装
- 备份物理服务器以及vCenter Server上的配置信息