6

我目前正在使用Android Jelly Bean MediaCodec API開發簡單的視頻播放器。Android MediaCodec API視頻播放速度過快

我提取音軌,在不同的線程中播放音頻和視頻。問題是視頻軌道總是播放得太快。

哪裏可以隱藏問題?
音頻和視頻的處理方式幾乎相同,除了通過AudioTrack播放音頻並將視頻渲染到表面之外。

+0

你從哪裏得到這個? – BlueVoodoo

+0

你可以請你發佈你的代碼。這將有助於客棧調試 – itsmeagain

+0

我有同樣的問題,你有想過嗎? – xiaowoo

回答

3

如果以最高速度渲染幀,那麼在大多數設備上將會達到60fps。您需要根據編碼器提供的演示時間戳對其進行調整。

例如,如果輸入是Android支持的格式(例如典型的.mp4文件),則可以使用MediaExtractor類來提取每個幀。時間戳可以用getSampleTime()檢索。您想通過連續幀上時間戳之間的差異來延遲渲染 - 不要假定第一幀的時間戳記爲零。

另外,不要假定視頻幀以恆定速率出現(例如30fps)。對於一些來源,幀將不均勻地到達。

請參閱Grafika中的「播放視頻(TextureView)」示例,特別是SpeedControlCallback類。 gen-eight-rects.mp4視頻使用可變的幀持續時間來鍛鍊它。如果您選中「以60fps播放」框,則會忽略演示文稿時間戳。