簡體   English   中英

從Mediacodec同步解碼的音頻和視頻數據

[英]Synchronise Decoded Audio and Video data from Mediacodec

我想使用MediaExtractorMediaCodec API編寫一個簡單的音頻/視頻播放器。

我能夠解碼和渲染audiovideo 但是,我錯過了audio - video同步。

我找不到任何API來控制audiovideo之間的同步。 有人可以告訴我,如何同步解碼的audiovideo數據?

在Android源代碼中,有一個基於MediaCodec API的示例player引擎實現。 你可以檢查SimplePlayer位於frameworks/av/cmds/stagefright/SimplePlayer.cpp

在這個播放器引擎的實現,從輸出MediaCodecdequeued ,如圖所示推入一個隊列這里 請查看第439-450行以獲得完整的圖片。

一旦緩沖區可用,有一個簡單的AV Sync實現機制這里 請參閱第508-521行。 在這個例子中,只考慮一個軌道,因此, nowUs即當前時間是從systemTime派生的,即ALooper::nowUs

在您的代碼中,您可以考慮始終以first-come-first-serve呈現audio ,對於video軌道,您可以從audio軌道中獲取 nowUs

一個簡單的實現可以是nowUs = getAudioLastPresentationTime() ,其中, getAudioLastPresentationTime將返回從audio MediaCodec發送到audio renderer的最后一個presentationTimeUs

暫無
暫無

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

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