2013-04-09 48 views
0

在Flash中,我有一個應用程序,其中多人通過NetStreams以不同的比特率和不同的質量設置將實時相機源共享到Flash Media Server/Adob​​e Media Server。是否有可能以不同的質量接收netstream

我需要移動用戶以不同的質量設置接收實時提要。

我發現receiveVideoFPS土坯API文檔中,但經過多少汗水和更多的眼淚,似乎它不支持W/H.264 ...(轉到數字 - http://forums.adobe.com/message/3841837#3841837#3841837

那麼,有沒有其他這樣做的方式,任何人都知道?或者我需要爲此做些什麼或什麼? 任何想法?解決方法?

目前:通過NetStream的>的Flash廣告應用程式發佈>共享照相機發布到FMS/AMS 目標:Flash應用程序收件人>訂閱公佈的NetStream在不同的FPS和/或分辨率

回答

0

我看到2種方法可以做到這一點。

第一種方法適用於PC或移動用戶一次只能看到任何流的情況。然後您必須獲得輸入視頻分辨率,如果不適合,請通過NetStream「發送」方法發送具有正確視頻高度/寬度的信息。發佈者必須收到此命令並更改其Camera對象參數。

第二個是比較困難,但它可以在任何情況下使用。你必須對服務器進行流式轉碼和重新流式處理。所以每個人都會使用PC質量,當移動用戶嘗試觀看流時,他向mediaserver發送一個restream請求,mediaserver接收它並創建一個具有相同名稱和一些後綴的新流(例如「stream」 - >「 stream_MOBILE「)。必須在此流中推送轉碼後的視頻(您可以使用FFmpeg轉碼器)。完成後,您的移動設備應該收聽「_MOBILE」流。

一個月前我面臨類似的問題。順便說一句,我使用的是Wowza Media Server,而不是FMS。我知道,Wowza有一個本地轉碼器工具,但沒有錢購買它,所以我不得不使用FFmpeg(這是免費的)。在我的情況下,解決方案非常簡單:我寫了一個小服務器端模塊,它正在監聽HTTP-GET請求,如:

http:// [adr]:[port]/restream?id = ID & w = XX & h = YY

其中ID是流的名稱,而XX/YY是新的視頻尺寸。

當收到這樣的請求時,一個腳本觸發,其中唯一的功能是啓動FFmpeg。它以這樣的命令開始:

ffmpeg -i rtmp:// [adr]/[appName]/[streamName] -vcodec libx264 -s 352x288 -acodec copy -f flv rtmp:// [adr]/[ appname]/[newStreamName]

此命令使FFmpeg將-i流轉碼爲-f dir,大小爲-s和編解碼器-vcodec和-acodec。

正如你所看到的,這很容易。 FFmpeg中有很多參數,比如比特率,幀率,圖像質量等。

+0

解決方案2將是理想的。我使用的是Flash Media Server,因此您會認爲轉碼可以在飛行中完成 - 我必須對其進行調查。 – 2013-04-10 10:24:34

+0

我也在想也許我可以發佈在多比特率或類似的東西。你有什麼經驗嗎? – 2013-04-10 10:25:24

+0

我想我已經找到了一條走向終點的好路子。我應該可以抓取Feed並使用服務器端動作重新發布爲另一個流。我可以處理一個onPublish事件。 http://help.adobe.com/en_US/adobemediaserver/devguide/WS5b3ccc516d4fbf351e63e3d11a0773d56e-7ffbDev.2.3.html – 2013-04-10 12:42:42

相關問題