我試圖同時讀寫由AVAssetWriter編寫的H.264 mov文件。我設法提取單獨的NAL單元,將它們打包到ffmpeg的AVPackets中,並使用ffmpeg將它們寫入另一個視頻格式。它的工作原理和結果文件播放良好,除了播放速度不正確。如何從原始H.264數據計算正確的PTS/DTS值?或者也許存在一些其他方式來獲得它們?從iOS生成的原始H264 mdat獲取PTS AVAssetWriter
這是我已經試過:
限制捕獲最小/最大幀速爲30,假定輸出文件將是每秒30幀。事實上,它的fps總是小於我設定的值。而且,我認爲fps在數據包與包之間並不是恆定的。
請記住每個書面樣本的呈現時間戳,並假定樣本一對一地映射到NALU並將保存的時間戳應用於輸出數據包。這不起作用。
將PTS設置爲0或AV_NOPTS_VALUE。不起作用。
從谷歌搜索瞭解它,我明白,原始的H.264數據通常不包含任何時間信息。它有時可以在SEI內部有一些時間信息,但是我使用的文件沒有它。另一方面,有一些應用程序正在做我正在嘗試做的事情,所以我認爲這是可能的。
我也試圖從AVAssetWriter寫的mov文件中同時讀取H.264,並且無法使用管道/常規文件讀取來執行此操作。在寫作過程中,你是如何設法閱讀的?謝謝! –
使用常規文件讀取,而不是在EOF上重新讀取。你的閱讀行動遲早會成功。 – kolyuchiy
@kolyuchiy - 調度源更好地使用該系統。在FILE描述符上設置一個讀取源。當有數據需要讀取時,塊將被調用。如果發生EOF,請清除FILE上的錯誤。 –