我們可以通過(guò)ffserver以及ffmpeg做一個(gè)簡(jiǎn)單的視頻監(jiān)控系統(tǒng),ffserver用于視頻的轉(zhuǎn)發(fā)調(diào)度,ffmpeg用于轉(zhuǎn)碼
而對(duì)于ffserver最基本也是最重要的就是對(duì)它的ffserver.conf文件的配置,通常我們的配置分為兩大類(lèi),分類(lèi)的依據(jù)就是帶不帶緩沖文件,不帶緩沖文件的比較簡(jiǎn)單,我們只需指定文件的格式以及路徑信息即可,不需要配置緩沖
最簡(jiǎn)單的配置文件如下
Port 9999
RTSPPort 9990
BindAddress 0.0.0.0
MaxClients 1000
MaxBandwidth 100000
CustomLog –
#只需要指定待播放的文件的路徑以及格式信息即可
<Stream test.flv>
File "/tmp/test.flv"
Format flv
</Stream>
執(zhí)行分如下兩步:
1. 在終端里輸入ffserver –f /etc/ffserver.conf
2. 在瀏覽器里或者相關(guān)播放器地址(我用的是VLC)里輸入 http://ipAddr:port/test.flv
其中第一步是執(zhí)行/etc目錄下的配置文件,不過(guò)這個(gè)目錄可以按自己需要指定,配置文件名也可以按自己需要指定。
對(duì)于帶有緩沖的,我們需要配置兩項(xiàng),一項(xiàng)是Feed一項(xiàng)是Stream,對(duì)于帶有緩沖的,我們可以播放文件,也可以播放實(shí)時(shí)的視頻,比如攝像頭實(shí)時(shí)采集的視頻。雖然播放的視頻源不一樣,但是配置文件是一樣的,差別在于執(zhí)行ffmpeg命令時(shí)的參數(shù)配置不一樣。
如下為一個(gè)簡(jiǎn)單的配置文件:
Port 9999
RTSPPort 9990
BindAddress 0.0.0.0
MaxClients 1000
MaxBandwidth 100000
CustomLog -
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 40K
Launch ./ffmpeg -v 0 -y -f pgmyuv -i tests/vsynth1/%02d.pgm
ACL allow localhost
</Feed>
<Stream test.flv>
Feed feed1.ffm
Format flv
#一下指定輸出流的編碼信息
BitExact
DctFastint
IdctSimple
VideoFrameRate 2
VideoSize 320x240
VideoBitRate 64
VideoGopSize 10
NoAudio
PreRoll 10
StartSendOnKey
MaxTime 100
</Stream>
執(zhí)行分如下三步:
1. 在終端里輸入ffserver –f /etc/ffserver.conf
2. a.若是文件方式則輸入ffmpeg –I filePath/filename http://ipAddr:port/test.flv
b.若是實(shí)時(shí)視頻則輸入ffmpeg -f alsa -ab 32 -i pulse -f video4linux2 -s qcif -i /dev/video0 http://<server name or ip>:8090/feed1.ffm
其中2.b中注意/dev/video0 以及video4linux2,這兩個(gè)很關(guān)鍵