2013-09-30 103 views
0

我正在使用新的API MediaCodec和MediaExtractor(API 16提供)構建一個android視頻播放器應用程序。它通常工作得很好,但有時我有一個非常無意義的消息崩潰:Android媒體編解碼器崩潰

09-30 16:39:13.985: A/MediaCodec(6508): frameworks/av/media/libstagefright/MediaCodec.cpp:423 CHECK(buffer->meta()->findInt64("timeUs", &timeUs)) failed. 
09-30 16:39:13.985: A/libc(6508): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 12769 (MediaCodec_loop) 

如果將是很好,如果有人可以給我一個更好的理解發生了什麼事情不對的。當我打開視頻,播放一點點,放棄它,轉到另一個視頻時,通常會發生崩潰。它只發生很少的時間,但非常煩人。

+1

這是一個失敗的斷言內mediacodec代碼。它期望找到一個時間戳和失敗。 (libstagefright實現在內部使用名稱/值對消息進行通信。)您使用的是哪種Android版本?行號稍有偏離,但JB-MR1/JB-MR1.1已關閉:https://android.googlesource.com/platform/frameworks/av/+/jb-mr1.1-release/media/libstagefright/ MediaCodec.cpp(見第421行)。 – fadden

回答

1

我終於找出解決方案。我在這裏回答,以便發現相同問題的人可以修復它。

當我mediacodec扮演靠近文件末尾,它不排隊多個輸入緩衝器內inputQueue,因此當它需要離隊緩衝區,它無法找到任何緩衝玩