好的,這是實際情況,我真的想從mov文件中解析幀。獲得編碼的h264幀。我已經設法通過使用ffmpeg來做到這一點,但是當我嘗試使用ffmpeg -i test* test.mov
再次製作電影時,我得到了test00: Invalid data found when processing input
,所以對於幀的結構有些不正確。據我所知的幀應具有以下外觀:將.mov文件轉換爲.h264文件
00 00 00 01 XX數據-------------
其中XX是說是否是I-, P-或B-幀。或更具體地說type(XX) = 0x0F && XX
表示如果它是I(type(XX)= 5?),P(type(XX)= 7?)或B(type(XX)= 8?)幀。我不確定這些數字,我一直在尋找它,但沒有找到好的來源。所以這是第一個問題,NALU應該爲不同的幀編號?
無論如何,當我使用av_read_frame在MOV文件,我得到幀看起來像這樣:
4B =大小,1B = XX,然後數據。 (至少這是我認爲我得到的)
我存儲幀的文件總是大小當我在hexeditor中查看它們時(當然也是如此)。並且對於一些幀,XX在第一個然後是61(即,類型(XX)= 1)中總是65(即,類型(XX)= 5),然後回到對於一個幀爲65等等。
我想這些幀是這樣的:I P P P P P P P P P P P P P P P P P P P P P ....然而,我關於不同幀類型的數字的假設是錯誤的,這很可能。 (除了ISO/IEC 14496-10之外,關於這方面的任何建議,我都不明白)。
我試圖刪除大小並在XX字節和數據之前追加00 00 00 01,但沒有成功。任何提示如何我可以修改幀是有效的H264編碼幀?
+1。另外,我認爲可能需要'-vbsf h264_mp4toannexb'選項來提取實際的附件B流。 – misha
感謝Alex和@misha的迴應。我意識到這個解決方案,但事情是我不能在提示中做到這一點,因爲我在iphone上進行實際的幀提取,我需要一種方法在代碼中完成這一操作。任何建議從哪裏開始?這樣做的原因是因爲我需要通過Web服務器將h264幀流式傳輸到外部框架以進一步處理幀。 –
從ffmpeg源開始。這一切都讓你看到。 – misha