使用MS Media Foundation,我試圖從圖像幀創建視頻(H.264/AAC),並在各個位置添加包含聲音效果的音軌。聲音效果之間的音頻流中會存在間隙。我正在使用配有音頻和視頻流的IMFSinkWriter
(詳情如下)。我目前正在測試僅在視頻中放置2秒的單一聲音效果。在Windows下(通過Windows媒體播放器或「電影&電視」),MP4文件呈現沒有錯誤並正確播放(聲音效果在正確位置播放)。但是,當我在MacOS(QuickTime)下播放視頻時,音頻無法正確同步。聲音效果比預期的要早得多。Media Foundation - 創建MP4時的跨平臺音頻同步問題
詳細
SinkWriter
我被配置爲與視頻流,用輸出亞型MFVideoFormat_H264
和輸入亞型MFVideoFormat_RGB32
。音頻流配置爲輸出子類型MFAudioFormat_AAC
和輸入子類型MFAudioFormat_PCM
(匹配提供音頻樣本的IMFSourceReader
)。
我先寫所有的視頻幀,然後寫出音頻採樣。在寫音頻時,如果在音效之前和之後都存在音頻間隙,我會使用SendStreamTick
(每0.5秒)。我還在第一個音頻樣本上設置了MFSampleExtension_Discontinuity
。聲音效果後我也嘗試發送NotifyEndOfSegment
,但這似乎沒有什麼區別。
我不寫樣本描述框,因爲我相信它是爲我的配置自動生成的。
任何幫助,將不勝感激。謝謝!
在合適的視頻編輯器中打開並檢查視頻和音頻軌道的時間。可能是你有更多的幀比同步音軌。同時檢查幀持續時間。 –