【问题标题】:Android mediacodec crashAndroid 媒体编解码器崩溃
【发布时间】:2017-12-06 00:13:50
【问题描述】:

我正在使用新的 API MediaCodec 和 MediaExtractor(可从 API 16 获得)构建一个 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)

如果有人能让我更好地了解出了什么问题,那就太好了。崩溃通常发生在我打开视频、播放一点、退出、转到另一个视频时。它只发生很少的时间,但很烦人。

【问题讨论】:

  • 这是媒体编解码器代码中的失败断言。它期望找到一个时间戳并失败。 (libstagefright 实现与名称/值对消息在内部进行通信。)您使用的是哪个版本的 Android?行号略有偏差,但 JB-MR1/JB-MR1.1 接近:android.googlesource.com/platform/frameworks/av/+/…(见第 421 行)。

标签: android android-mediacodec mediaextractor


【解决方案1】:

我终于找到了解决办法。我在这里回答,以便发现相同问题的人可以解决它。

当我的媒体编解码器在文件末尾附近播放时,它不会将更多输入缓冲区排队到 inputQueue 中,因此当它需要将缓冲区出列时,它找不到任何要播放的缓冲区

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    相关资源
    最近更新 更多