ffmpeg ffserver 推流服務器

fmpeg進行推流,把服務器上的源媒體文件轉換成要發送出去的流媒體文件,
ffserver則負責響應客戶端的流媒體請求,把流媒體數據發送給客戶端。
ffserver.conf,ffserver啓動時的配置文件,在這個文件中主要是對網絡協議,緩存文件feed1.ffm和要發送的流媒體文件的格式參數做具體的設定。
feed1.ffm,可以看成是一個流媒體數據的緩存文件,ffmpeg把轉碼好的數據發送給ffserver,如果沒有客戶端連接請求,ffserver把數據緩存到該文件中。

ffserver.conf示例如下:

Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 30000
CustomLog -
NoDaemon
#NoDefaults
 
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 1M
ACL allow 127.0.0.1
</Feed>
 
<Stream test1.ts>
Feed feed1.ffm
#File btv2.ts 
Format mpegts
#BitExact
#DctFastint
#IdctSimple
VideoFrameRate 25
#VideoBufferSize 4096
#VideoSize 720x576
VideoSize 1920x1080
VideoBitRate 9000
NoAudio
</Stream>
 
<Stream stat.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>

主要分爲4個部分,服務器端口配置,ffm配置,流配置及stat.html。
可以參考ffmpeg源碼中的doc/ffserver.conf,裏邊有詳細的註釋

啓動ffserver和ffmpeg。ffserver先於ffmpeg啓動,它在啓動的時候需要加參數-f指定其配置文件ffserver.conf。ffserver啓動後,feed1.ffm就會被創建,發現feed1.ffm開始的部分已經寫入了內容,可以找到關鍵字ffm以及向客戶端傳送流的配置信息,在feed1.ffm做緩衝用的時候,這些信息是不會被覆蓋掉的,就把它們理解爲feed1.ffm文件的頭吧。

ffserver啓動後,ffmpeg啓動,它啓動時加的一個關鍵參數就是“http://ip:10535/feed1.ffm”,其中ip是運行ffserver主機的ip,如果ffmpeg和ffserver都在同一系統中運行的話,用localhost也行。ffmpeg啓動後會與ffserver建立一個連接(短暫的連接),通過這第一次的連接,ffmpeg從ffserver那裏獲取了向客戶端輸出流的配置,並把這些配置作爲自己編碼輸出的配置,然後ffmpeg斷開了這次連接,再次與ffserver建立連接(長久的連接),利用這個連接ffmpeg會把編碼後的數據發送給ffserver。

3.VLC控件
ActiveX VLC Player是基於ActiveX控件的播放器。有VLC作支持,VLC控件播放支持HTTP、RTMP、HLS,而且支持MMS、RTSP以及UDP這些協議(VLC Media Player支持的協議它都支持)。
新版本VLC安裝時,會有vlc activeX控件安裝選項,注意一下就行了。古早版本的vlc控件安裝麻煩點。
但是由於ActiveX控件,除了IE,其他瀏覽器並不支持(自 Chrome 45 起,將不再提供 NPAPI 支持;Google和Adobe將致力於直接內建於新接口(PPAPI)的Flash功能)。

所以網頁播放提供一下幾種播放器,參考大神的文章:http://blog.csdn.net/leixiaohua1020/article/details/43936415。

4.實現過程
ffserver先啓動起來,

ffserver -f ffserver.conf

其中的參數配置可參照上面,/tmp/feed1.ffm

ffmpeg  -i output.ts http://localhost:8090/feed1.ffm

輸出的視頻地址爲

http://推流機器IP:8090/test1.ts
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章