ubuntu 下ffmpeg 编译及安装方法
系统:UBUNTU 14.10
一 配置编译环境安装ffmpeg
1:下载ffmpeg源码:
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
2:下载yasm
sudo apt-get install yasm
3:安装xorg-dev和SDL库,这两个库主要是为了编译ffplay用(如果缺少这两个库,不会编译生成ffplay)
sudo apt-get install xorg-dev
sudo apt-get install libsdl1.2-dev
4:开始配置ffmpeg,默认配置直接调用configure脚本即可
./configure
如果想启用或者禁用某种功能,调用--help查看configure命令即可
./configure --help
5:开始编译ffmpeg,
make
6:安装ffmpeg
sudo make install
------至此,编译安装完毕,如果想要学习使用API,请参考源码目录下doc/examples
二 :配置并开启ffserver
1:进入到源码目录下,打开tests/ffserver.conf
vim tests/ffserver.conf
2: 以下是ffserver.conf文件内容
# # This is a test configuration file. You can invoke it with # ../ffserver -f ffserver.conf # when in the tests directory and once the vsynth1 subdirectory # has been populated. Then point your browser at http://whatever:9999/teststat.html # and you can look at the streams # # # Port on which the server is listening. You must select a different # port from your standard http web server if it is running on the same # computer. HTTPPort 9999 #HTTP协议端口 RTSPPort 9990 #RTS协议端口 # Address on which the server is bound. Only useful if you have # several network interfaces. HTTPBindAddress 0.0.0.0 #如果你有多个网卡IP地址,需要绑定指定网卡IP # Number of simultaneous requests that can be handled. Since FFServer # is very fast, this limit is determined mainly by your Internet # connection speed. MaxClients 1000 #客户端链接最大数 MaxBandwidth 100000 # Access Log file (uses standard Apache log file format) # '-' is the standard output CustomLog - ################################################################## # Definition of the live feeds. Each live feed contains one video # and/or audio sequence coming from an ffmpeg encoder or another # ffserver. This sequence may be encoded simultaneously with several # codecs at several resolutions. <Feed feed1.ffm> # You must use 'ffmpeg' to send a live feed to ffserver. In this # example, you can type: # # ffmpeg http://localhost:8090/feed1.ffm # ffserver can also do time shifting. It means that it can stream any # previously recorded live stream. The request should contain: # "http://xxxx?date=[YYYY-MM-DDT][[HH:]MM:]SS[.m...]".You must specify # a path where the feed is stored on disk. You also specify the # maximum size of the feed (100M bytes here). Default: # File=/tmp/feed_name.ffm FileMaxSize=5M File tests/feed1.ffm #feed1.ffm可以理解为缓存文件。如果是采集数据,需要ffmpeg将数据保存到tests/feed1.ffm,如果是本地文件则不用输出到feed1.ffm FileMaxSize 100M #缓存文件大小 # Fire up ffmpeg pointing at this stream Launch ./ffmpeg -v 0 -y -f image2 -i tests/vsynth1/%02d.pgm #允许访问的IP地址范围 ACL allow localhost #例如 ACL allow 192.168.1.1 192.168.1.255 </Feed> ################################################################## # Now you can define each stream which will be generated from the # original audio and video stream. Each format has a filename (here # 'test128.mpg'). FFServer will send this stream when answering a # request containing this filename. <Stream test_h.avi> Feed feed1.ffm Format avi # BitExact DctFastint IdctSimple VideoFrameRate 10 VideoSize 352x288 VideoBitRate 100 VideoGopSize 30 NoAudio PreRoll 10 StartSendOnKey MaxTime 100 </Stream> <Stream test_l.avi> Feed feed1.ffm Format avi # BitExact DctFastint IdctSimple VideoFrameRate 2 VideoSize 320x240 VideoBitRate 40 VideoGopSize 20 NoAudio PreRoll 20 StartSendOnKey MaxTime 100 </Stream> #<Stream test_h.mpg> #Feed feed1.ffm # #VideoFrameRate 10 #VideoSize 352x288 #VideoBitRate 100 #VideoGopSize 30 #NoAudio #PreRoll 10 #StartSendOnKey #MaxTime 100 # #</Stream> # #<Stream test_l.mpg> #Feed feed1.ffm ## #VideoFrameRate 2 #VideoSize 320x240 #VideoBitRate 40 #VideoGopSize 20 #NoAudio # #PreRoll 20 #StartSendOnKey #MaxTime 100 # #</Stream> # <Stream test.swf> Feed feed1.ffm # BitExact DctFastint IdctSimple Qscale 10 VideoFrameRate 10 VideoSize 352x288 VideoBitRate 100 VideoGopSize 30 NoAudio PreRoll 10 StartSendOnKey MaxTime 100 </Stream> <Stream test_h.asf> Feed feed1.ffm Format asf # BitExact DctFastint IdctSimple Qscale 10 VideoFrameRate 10 VideoSize 320x240 VideoBitRate 100 VideoGopSize 30 NoAudio PreRoll 10 StartSendOnKey MaxTime 100 AVOptionVideo flags +global_header Metadata title "Test data stream" </Stream> <Stream test_l.asf> Feed feed1.ffm Format asf # BitExact DctFastint IdctSimple Qscale 10 VideoFrameRate 2 VideoSize 320x240 VideoBitRate 40 VideoGopSize 20 NoAudio PreRoll 20 StartSendOnKey MaxTime 100 AVOptionVideo flags +global_header Metadata title "Test data stream" </Stream> <Stream test_h.rm> Feed feed1.ffm Format rm BitExact DctFastint IdctSimple Qscale 10 VideoBitRate 100 VideoFrameRate 10 VideoGopSize 30 VideoSize 320x240 NoAudio PreRoll 10 StartSendOnKey MaxTime 100 </Stream> <Stream test_l.rm> Feed feed1.ffm Format rm BitExact DctFastint IdctSimple Qscale 10 VideoBitRate 40 VideoFrameRate 2 VideoGopSize 20 VideoSize 320x240 NoAudio PreRoll 20 StartSendOnKey MaxTime 100 </Stream> <Stream test.jpg> Feed feed1.ffm Format jpeg Strict -1 BitExact DctFastint IdctSimple VideoFrameRate 1 VideoSize 352x288 NoAudio PreRoll 2 </Stream> <Stream test_small.jpg> Feed feed1.ffm Format jpeg Strict -1 BitExact DctFastint IdctSimple VideoFrameRate 1 VideoSize 160x128 NoAudio PreRoll 2 </Stream> <Stream test.mjpg> Feed feed1.ffm Format mpjpeg Strict -1 BitExact DctFastint IdctSimple VideoFrameRate 1 VideoSize 320x240 NoAudio StartSendOnKey PreRoll 1 MaxTime 100 </Stream> #下面是我添加的本地文件,这个文件用 <Stream chaoti.avi> File /home/flying/chaoti.avi Format avi </Stream> ################################################################## # Special stream : server status <Stream teststat.html> Format status </Stream>
3:启动ffserver服务
ffserver -f tests/ffserver.conf
4:打开https://localhost:9999/teststat.html 查看服务是否正常,如果不正常,请根据log分析原因
5:用ffplay查看添加的本地文件视频,就可以播放成功了
./ffplay http://localhost:9999/chaoti.avi
---后续有机会尝试一下视频远程播放
by 学不会游泳的鱼 2014-12-4
参考资料
1:ffmpeg官网:www.ffmpeg.org
2: ffserver与x264 : http://blog.csdn.net/mu399/article/details/5860887

浙公网安备 33010602011771号