最後終於 google 到官方文件,看得懂英文的人請直接看原出處:
Stream live media (HTTP)
http://help.adobe.com/en_US/flashmediaserver/devguide/WSd391de4d9c7bd609-52e437a812a3725dfa0-8000.html
===========================================================
作法一:
FMLE 將 camera 編碼成單一 bit rate,送給 FMS 的 rtmp://127.0.0.1/live 的 livestream:
client 端,可使用 FMS 提供的 sample player - StrobeMediaPlayback 來觀看,將
{FMS}\samples\videoPlayer
複製到
{FMS}\webroot\videoPlayer
就可以用了
瀏覽網址:
http://localhost/videoPlayer/videoplayer.html?source=rtmp://localhost/live/livestream&type=live
stream url = rtmp://localhost/live/livestream
這樣就可以看到 RTMP 的 stream
===========================================================
作法二:
FMLE 將 camera 編碼成多組 bit rate,送給 FMS 的 rtmp://127.0.0.1/live 的 livestream%i:
在 apache web server 上,準備 live.f4m 這個 manifest 檔案,放在網站根目錄下:
<manifest xmlns="http://ns.adobe.com/f4m/1.0"> <id>Dynamic Streaming</id> <baseURL>rtmp:/live/</baseURL> <streamType>live</streamType> <media url="livestream1" bitrate="150"/> <media url="livestream2" bitrate="300"/> <media url="livestream3" bitrate="650"/> </manifest>
瀏覽網址:
http://localhost/videoPlayer/videoplayer.html?source=http://localhost/live.f4m&type=live
stream url = http://localhost/live.f4m
這樣就可以看到依照不同頻寬而決定的 RTMP 的 stream
===========================================================
作法三:
請參考官方文件中 "Publish and play a single live stream over HTTP" 這段!
先修改 FMLE 設定檔:
{FMLE}\conf\config.xml
<flashmedialiveencoder_config>
<mbrconfig>
<streamsynchronization>
<!-- "true" to enable this feature, "false" to disable. -->
<enable>true</enable>
重新啟動 FMLE,使用 FMLE 將 camera 編碼成單一 bit rate,這次不是送給 FMS 的 live application,而是改送給 livepkgr 的 livestream?adbe-live-event=liveevent:
livepkgr 會將收到的 live stream 儲存成為 f4f 與其他相關檔案,放在以下目錄:
{FMS}\applications\livepkgr\streams\_definst_\livestream
瀏覽網址:
http://localhost/videoPlayer/videoplayer.html?source=http://localhost/hds-live/livepkgr/_definst_/liveevent/livestream.f4m&type=live
stream url = http://localhost/hds-live/livepkgr/_definst_/liveevent/livestream.f4m
這份 livestream.f4m 的 manifest 檔案不是由我們預先準備好的,而是由 apache 的 f4fhttp modules 所動態產生出來的,內容如下:
<?xml version="1.0" encoding="UTF-8"?> <manifest xmlns="http://ns.adobe.com/f4m/1.0"> <id> livepkgr/events/_definst_/liveevent </id> <streamType> live </streamType> <duration> 0 </duration> <bootstrapInfo profile="named" url="../../../streams/livepkgr/streams/_definst_/livestream/livestream.bootstrap" id="bootstrap6971" > </bootstrapInfo> <media streamId="livestream" url="../../../streams/livepkgr/streams/_definst_/livestream/livestream" bootstrapInfoId="bootstrap6971" > <metadata> AgAKb25NZXRhRGF0YQgAAAAAAAV3aWR0aABAdAAAAAAAAAAGaGVpZ2h0AEBuAAAAAAAAAAx2aWRlb2NvZGVjaWQCAARWUDZGAAl0cmFja2luZm8KAAAAAgMACXRpbWVzY2FsZQBAj0AAAAAAAAAIbGFuZ3VhZ2UCAANlbmcAAAkDAAl0aW1lc2NhbGUAQI9AAAAAAAAACGxhbmd1YWdlAgADZW5nAAAJAAAJ </metadata> </media> </manifest>
可以看出,它會指向 {FMS}\applications\livepkgr\streams\_definst_\livestream 找尋對應的 stream 片段丟回給 client 端。client 端就會不斷的將收到的片段播放出來:
===========================================================
作法四:
請參考官方文件中 "Publish and play live multi-bitrate streams over HTTP" 這段!
設定 FMLE 的步驟與 作法三 相同。
移除 Manifest.xml,避免 apache 根據此文件來當作動態產生 *.f4m 的依據。
FMLE 將 camera 編碼成多組 bit rate,送給 FMS 的 livepkgr 的 livestream%i?adbe-live-event=liveevent:
接著,要來準備 liveevent.f4m 檔,使用 FMS 內建的工具:
{FMS}\tools\f4mconfig\configurator\f4mconfig.html 或 f4mconfig.swf
產生的 liveevent.f4m 如下:
<manifest xmlns="http://ns.adobe.com/f4m/2.0"> <baseURL>http://localhost/hds-live/livepkgr/_definst_/liveevent/</baseURL> <media href="livestream1.f4m" bitrate="150"/> <media href="livestream2.f4m" bitrate="300"/> <media href="livestream3.f4m" bitrate="650"/> </manifest>
此 f4m 檔可以放在 web server 的任一處,我放在根目錄下:
{FMS}\webroot\liveevent.f4m
瀏覽網址:
http://localhost/videoPlayer/videoplayer.html?source=http://localhost/liveevent.f4m&type=live
stream url = http://localhost/liveevent.f4m
這醬就可以看到 liveevent.f4m,然後根據不同頻寬決定要再讀取哪一個 livestream{i}.f4m,這個 livestream{i}.f4m 會動態產生,會指到對應的 stream 資料夾與相關檔案片段。
測試時,會根據 client 端頻寬的變化而動態決定載入不同 bit rate 的影片片段 (livestream{i}Seg{nnnnn}-Frag{nnnnn}):
===========================================================
補充:
官方文件中,這篇有說明背後的原理與流程:
Configure HTTP Dynamic Streaming and HTTP Live Streaming
http://help.adobe.com/en_US/flashmediaserver/devguide/WSeb6b7485f9649bf23d103e5512e08f3a338-8000.html








4 意見:
請教這位大哥
小弟有一專案需要將網路攝影機的即時影像交由FMS進行廣播發送
研究許久都沒看到相關做法 能否請指導一下
PS網路攝影機可已下達Http方式進行影像串流輸出
官網有提供完整說明
http://help.adobe.com/en_US/flashmediaserver/devguide/WS5b3ccc516d4fbf351e63e3d11a0773cfae-8000Dev.html
看你想用哪種作法都可以
這位大哥再次打擾
官網上的文件看來都比需配合Flash Media Live Encoder 而在該系統中的頁面上有一Device的選項 看來都屬於WebCAM裝置
而我所使用的均是獨立的網路攝影機除非有安裝相關的Capture Driver才能使用 我這樣的說法是否正確
另外如果我有兩支以上的攝影機 那可以開啟兩個Flash Media Live Encoder同時運作嗎
如造成不便 請你見諒
謝謝
不用擷取卡,一般網路攝影機皆可,FLME 可以抓得到我 NB 內建 30萬畫素的 webcam。
FLME 可以開啟多個。
若你要自己用 Flash 寫,請參考 NetStream 與 Camera 類別的用法:
http://help.adobe.com/zh_TW/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#attachCamera%28%29
張貼意見