簡體   English   中英

批量寫入樣本時,Mediamuxer產生損壞的視頻

[英]Mediamuxer produces corrupted video when samples are written in batch

我正在嘗試使用Android的MediaMuxer和MediaCodec來制作MP4視頻。

如果我通過調用writeSampleData()將幀從編解碼器直接消耗到復用器,則一切正常,並生成正確的視頻。

但是,如果我嘗試先將這些幀存儲在數組中,然后再決定將其發送到多路復用器,則即使演示時間戳正確,我也無法制作有效的視頻。

出於某種原因,盡管我認為只要具有正確的時間戳就足夠了,但看來,mediamuxer的輸出不僅取決於表示時間戳,而且還取決於調用“ writeSampleData”的實際時間。

誰能闡明這個問題?

感謝mstorsjofadden 實際上,我遇到了很多錯誤,這些錯誤使我無法理解實際發生的情況。 您的兩個問題都使我找到了正確的代碼,並確信使用writeSampleData() 並不對時間敏感。

是的,我第一次遇到錯誤的緩沖區。 這個問題最初並不明顯,因為復用器在重寫緩沖區之前正在寫幀。 當我引入延遲並決定復制緩沖區內容時,我遇到了另一個問題(基本上是競爭條件),並得出結論並非如此。

該代碼的作用(對於SmartPolicing項目)是捕獲視頻和音頻以創建MP4文件。 我可以使用MediaRecorder(這是最初的解決方案),但我們也想截取幀並通過網絡流式傳輸視頻,因此我們放棄了MediaRecorder並創建了一個自定義解決方案。

現在它運行平穩。 謝謝你們

您確定確實存儲了要寫入幀的完整數據,而不僅僅是緩沖區索引嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM