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

posted @ 2014-12-04 10:09  学不会游泳的鱼  阅读(596)  评论(0)    收藏  举报