web flash推流錄製測試研究

用flash as3寫了一段推流測試demo,參考srs_publisher和simplest_as3_rtmp_streamer。
推流到srs2服務器,錄製爲flv文件。
測試一輪結果如下:

Web Flash推上來的流,經過srs錄製爲flv。
srs設置jitter_time full; dvr_plan segment; dvr_duration 180; 實際錄製180s。
flowplayer 可以播放服務器flv文件 有聲音沒視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
jwplayer 可以播放服務器flv文件 有聲音沒視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
sewiseplayer 可以播放服務器flv文件 有聲音沒視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 seek功能可後期添加。
strobe 可以播放服務器flv文件 有聲音有視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
srs設置jitter_time zero;貌似也可以,筆記本測試過。

srs設置jitter_time off; dvr_plan session;
flowplayer 可以播放服務器flv文件 有聲音沒視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
jwplayer 可以播放服務器flv文件 有聲音沒視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
sewiseplayer 可以播放服務器flv文件 有聲音沒視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
strobe 可以播放服務器flv文件 有聲音有視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。

srs設置jitter_time zero; dvr_plan session;
flowplayer 可以播放服務器flv文件 有聲音沒視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
jwplayer 可以播放服務器flv文件 有聲音有視頻 長寬比不對 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
sewiseplayer 可以播放服務器flv文件 有聲音有視頻 有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。
strobe 可以播放服務器flv文件 有聲音有視頻 沒有時間標籤 不支持seek。(ffmpeg,yamdi,flvmeta) 修復meta後 正常播放 有時間標籤 支持seek。

一段時間以來都沒有解決這個問題,以爲就是這樣的。也和網友討論過這個問題,被當做srs feature處理了。
這幾天研究錄製的文件,發現錄製的flv和其他平臺錄製的flv格式不太一樣。
使用FlvParse分析一下錄製flv文件的結構,發現:
經過ffmpeg轉化的flv,有字段onMetaData,而web flash推流錄製發flv沒有。

  

經過查找接口,發現as3也有onMetaData接口,我並未調用。添加如下代碼解決:

 1 // add metaData for stream
 2     var metaData:Object = new Object();
 3     metaData.title = "SptCallCenter";
 4     metaData.author = "Jeffer";
 5 metaData.width = av_hd_width;
 6     metaData.height = av_hd_height;
 7     metaData.videodatarate = av_hd_Vbitrate/1000;
 8     metaData.framerate = av_hd_fps;
 9 //send metadata
10     metaData.videocodecid = 7;
11     metaData.audiosamplerate = 16000;
12     metaData.audiocodecid = 4;
13     media_stream.send("@setDataFrame", "onMetaData", metaData); 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章