2011-09-21 76 views
3

我想從我的攝像頭連接到我的無頭Ubuntu服務器(運行Maverick 10.10)流視頻和音頻。我希望能夠以WebM格式(VP8視頻+ OGG)進行流式傳輸。帶寬有限,所以流必須低於1Mbps。命令行流媒體攝像頭與WebM格式的Ubuntu服務器音頻

我試過使用FFmpeg。我能夠記錄來自攝像頭的WebM視頻下列要求:

ffmpeg -s 640x360 \ 
-f video4linux2 -i /dev/video0 -isync -vcodec libvpx -vb 768000 -r 10 -vsync 1 \ 
-f alsa -ac 1 -i hw:1,0 -acodec libvorbis -ab 32000 -ar 11025 \ 
-f webm /var/www/telemed/test.webm 

然而,儘管與垂直同步和異步選擇各種方式進行實驗,我可以不同步的音頻,或尼山風格的快進視頻與匹配的快速音頻。我也一直無法得到這與ffserver實際工作(通過替換test.webm路徑和文件名與相關的飼料文件名)。

目標是在緊湊的帶寬中使用只有開源組件才能獲得可在現代瀏覽器中查看的實時音頻+視頻饋送。 (沒有MP3格式的合法穀殼)

因此我的問題是: 你會如何從網絡攝像頭通過Linux與同步音頻流webm?你使用什麼軟件?

您是否成功通過FFmpeg通過網絡攝像頭編碼webm中的同步音頻?如果是這樣,你發出了什麼命令?

FFmpeg + FFserver是否值得堅持,還是還有其他更適合的命令行工具(例如VLC,它似乎不太適合編碼)?

是否像Gstreamer + flumotion可從命令行配置?如果是這樣,我在哪裏可以找到命令行文檔,因爲flumotion doc在命令行細節上相當輕鬆?

在此先感謝!

回答

0

你應該考慮嘗試一下flumotion。您可以使用flumotion-admin輕鬆設置從網絡攝像頭捕獲的webm管道,並讓它在後臺運行。

0

我最近設置了它,但它有點痛苦。這是我必須做的:

首先,從源代碼構建ffmpeg以包含libvpx驅動程序(即使您使用的是帶有它的版本,您需要最新的版本(截至本月)來流式傳輸webm,因爲它們只是確實添加了包含全局標題的功能)。我在Ubuntu服務器和桌面上執行了此操作,並且this guide向我顯示了操作方法 - 其他操作系統can be found here的操作說明。

一旦你已經得到適當版本的ffmpeg/ffserver,你可以將它們設置爲流式傳輸,在我的情況下,這是按如下方式完成的。

在視頻捕獲裝置:

ffmpeg -f video4linux2 -standard ntsc -i /dev/video0 http://<server_ip>:8090/0.ffm 
  • 的是, 「-f video4linux2 - 標準NTSC -i的/ dev/video0的」 部分可以變化取決於輸入信號源(礦爲視頻採集卡)。

相關的ffserver。CONF摘錄:

Port 8090 
#BindAddress <server_ip> 
MaxHTTPConnections 2000 
MAXClients 100 
MaxBandwidth 1000000 
CustomLog /var/log/ffserver 
NoDaemon 

<Feed 0.ffm> 
File /tmp/0.ffm 
FileMaxSize 5M 
ACL allow <feeder_ip> 
</Feed> 
<Feed 0_webm.ffm> 
File /tmp/0_webm.ffm 
FileMaxSize 5M 
ACL allow localhost 
</Feed> 

<Stream 0.mpg> 
Feed 0.ffm 
Format mpeg1video 
NoAudio 
VideoFrameRate 25 
VideoBitRate 256 
VideoSize cif 
VideoBufferSize 40 
VideoGopSize 12 
</Stream> 
<Stream 0.webm> 
Feed 0_webm.ffm 
Format webm 
NoAudio 
VideoCodec libvpx 
VideoSize 320x240 
VideoFrameRate 24 
AVOptionVideo flags +global_header 
AVOptionVideo cpu-used 0 
AVOptionVideo qmin 1 
AVOptionVideo qmax 31 
AVOptionVideo quality good 
PreRoll 0 
StartSendOnKey 
VideoBitRate 500K 
</Stream> 

<Stream index.html> 
Format status 
ACL allow <client_low_ip> <client_high_ip> 
</Stream> 
  • 注意這個被配置用於在feeder_ip一個服務器以執行上述FFMPEG命令,並在SERVER_IP服務器,以便服務器通過client_high_ip client_low_ip同時處理的MPEG到WEBM會話上SERVER_IP(繼續)。

此FFMPEG命令在機器上執行先前稱爲SERVER_IP(它處理實際的MPEG - > WEBM轉換並將其反饋到ffserver的在不同的進料):

ffmpeg -i http://<server_ip>:8090/0.mpg -vcodec libvpx http://localhost:8090/0_webm.ffm 

一旦這些文件全部啓動(首先是ffserver,然後是feeder_ip ffmpeg進程,然後是server_ip ffmpeg進程),您應該能夠訪問http://:8090/0.webm上的實時流並檢查http中的狀態://:8090/

希望這會有所幫助。