我有FLV流生成問題。我開發了DVR系統,它應該能夠以FLV格式流式傳輸視頻(在Actionscript NetStream上播放)。我從原始H264 NAL單元(0x00 0x00 0x00 0x01)接收編碼器的視頻,我也可以識別編碼的幀IDR或非IDR。如何從Actionscript NetStream可以播放的原始h264生成FLV流?
我的解決方案來創建FLV流(基於Adobe規格:視頻文件格式規範第10版)是:
- 等待IDR幀;
- 放FLV頭
- 放PrevTagSize(0)
- 放FLV標籤與視頻標籤可視數據與AVCVIDEODATA
- 放PrevTagSize
- 重複步驟4,5直到流的結束。
流看起來不錯,並且可以通過ffplay時,MPlayer,VLC等 播放,但基於的ActionScript的NetStream不受播放器上播放。
所以,我得到的原始數據H264並將其轉換使用的ffmpeg爲FLV:
的ffmpeg -f H264 -i d1.h264 -vcodec複製-f FLV d1.flv
和嘗試將flv的my和ffmpeg進行比較。
首先,我看到ffmpeg會在FLV標頭後立即添加AVC序列標頭。 我已經開始做同樣的事情,但是NetStream仍然不支持我的流,而另一位玩家也不再玩它了。
好吧,然後我繼續比較flv的。 現在我看到ffmpeg的編碼FLV中的NAL單元標題有所改變,但我無法理解這些更改的含義。我讀了很多規格,但沒有什麼幫助。 有人可以澄清我嗎?
佛例如我的NAL單元看起來如此: 00 00 00 01 XX XX ... - 對於所有單元
的FFmpeg的NAL: 00 00 [14 BA] 61 ... 9A - 非IDR(二字節變量) 00 00 [7A 02] 65 88 ... - IDR(兩個字節可變) 00 00 00 40 06 05 ... - SEI
是否添加了一些計數器或其他內容?
將高興地看到任何想法,鏈接等
我工作的一個FLV複用器也不知道如何存儲使用x264_encoder_encode編碼時得到的x264_nal_t *數據。你的流是否正常工作?你能解釋一下你的方法嗎? – pollux 2012-10-11 20:07:15