我正在對HTML5提供的視頻播放功能進行一些研究。我剛剛發現,Google Chrome和Firefox的最新版本支持通過帶有標記的HTTP播放WebM編碼的實況視頻流。我在哪裏可以找到有關WebM live http streaming的信息?
我在任何地方都找不到有關如何實際實施的信息。在Apple HTTP Live Streaming協議中有很多鏈接,但在WebM流媒體上沒有多少鏈接。
任何有用的鏈接將不勝感激。
我正在對HTML5提供的視頻播放功能進行一些研究。我剛剛發現,Google Chrome和Firefox的最新版本支持通過帶有標記的HTTP播放WebM編碼的實況視頻流。我在哪裏可以找到有關WebM live http streaming的信息?
我在任何地方都找不到有關如何實際實施的信息。在Apple HTTP Live Streaming協議中有很多鏈接,但在WebM流媒體上沒有多少鏈接。
任何有用的鏈接將不勝感激。
這是我如何做了它在Ubuntu:
首先,從源代碼編譯的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
相關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>
此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/
希望這會有所幫助。
這些鏈接在使用什麼工具等方面很有用,但我實際上想知道在客戶端和服務器之間的協議方面會發生什麼。通過查看Firebug輸出,客戶端似乎創建了一個到服務器的HTTP套接字。只要套接字保持打開狀態,服務器就會保持套接字處於打開狀態並泵送視頻數據。您可以暫停播放器,但視頻仍然在後臺下載。這肯定與Apple HTTP直播或Microsoft SilverLight SmoothStreaming有很大不同。 –