媒体编解码器| Android |视频解码本机崩溃
一些背景:我的应用程序允许用户使用OpenGL和MediaCodec API从API 16及更高版本开始在屏幕上预览多个视频。这些视频都是.mp4文件 在我解码了表面上的视频后,我也经历了类似的崩溃。但我的是专门针对三星设备的 紧急救援线: A/libc﹕ 0x00000000处的致命信号11 SIGSEGV代码=1,线程11685 MediaCodec_循环 LogCat输出: 当我尝试在Galaxy S3上解码超过2个视频文件时,问题就特别出现了。2个视频播放得很好 我在HTC OneX4.1.x和LG Nexus4.2.x上测试了相同的代码,他们一次播放6个视频都没有问题 你知道问题是什么吗 编辑1 问题主要是软件编解码器,我的mime类型的编解码器有3个硬件和1个软件,分别是OMX.SEC.avc.dec、OMX.SEC.avcdec、OMX.SEC.avc.Decoder和OMX.google.h264.Decoder。OMX.SEC.avc.dec只能对1个视频进行解码,而其他视频则得到OMX.google.h264.decoder,因为它们的解码器在我的情况下,其他2个是无用的媒体编解码器| Android |视频解码本机崩溃,android,video,opengl-es-2.0,samsung-mobile,android-mediacodec,Android,Video,Opengl Es 2.0,Samsung Mobile,Android Mediacodec,一些背景:我的应用程序允许用户使用OpenGL和MediaCodec API从API 16及更高版本开始在屏幕上预览多个视频。这些视频都是.mp4文件 在我解码了表面上的视频后,我也经历了类似的崩溃。但我的是专门针对三星设备的 紧急救援线: A/libc﹕ 0x00000000处的致命信号11 SIGSEGV代码=1,线程11685 MediaCodec_循环 LogCat输出: 当我尝试在Galaxy S3上解码超过2个视频文件时,问题就特别出现了。2个视频播放得很好 我在HTC OneX4.
我也在Nexus5Lollipop、小米Mi3KitKat和Galaxy S4KitKat上测试了该应用程序,绝对没有问题,因为这些设备成功地分配了6个硬件编解码器进行解码。所有设备都对硬件编解码器可以同时解码的视频数量有限制,包括实例数或所需的总带宽。尝试执行更多操作可能会导致配置失败或使用软件回退。听起来你好像碰到了一只虫子。没有强制行为,我不知道多个同步解码的CTS测试的状态是什么4.3中没有,不认为4.4中有,不知道5.0。在任何情况下,这都应该在CTS中报告和表示。我已经用我进行的更多信息和测试更新了我的问题。我面临的另一个问题是,这个致命信号使我的应用程序崩溃,对此我无能为力,我试图捕捉到它,但没有成功。是否有方法至少捕获此异常并向用户显示一些消息?这是一个本机崩溃,看起来像是在关闭解码器时试图在SEC OMX代码中设置空指针。这也不例外;没有办法抓住它。如果有人对系统的这一部分有深入的了解,也许可以提出一种解决方法。更多信息,我在几次测试后发现,如果我同时播放5个视频,前4个解码器会得到OMX.SEC.avc.dec codec的实例,第5个解码器会得到OMX.google.h264.decodec。一切都很顺利。但如果我同时播放6个视频应用程序的上限要求,并为第5 n 6个视频创建2个OMX.google.h264.decoder编解码器实例,则在视频播放完毕后,此致命信号再次出现。法登有什么疯狂的猜测吗?在Galaxy S3上进行的测试听起来像是GS3的bug。除了有一张桌子上写着你不能在X设备上同时播放超过N个视频之外,我没有任何解决办法。
02-09 18:56:41.819 1902-1902/? I/DEBUG? *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-09 18:56:41.819 1902-1902/? I/DEBUG? Build fingerprint: 'samsung/m0zs/m0:4.1.2/JZO54K/I9300ZSEMK2:user/release-keys'
02-09 18:56:41.819 1902-1902/? I/DEBUG? pid: 16880, tid: 17266, name: MediaCodec_loop >>> com.flambestudios.picplaypost <<<
02-09 18:56:41.819 1902-1902/? I/DEBUG? signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? r0 00000000 r1 00000000 r2 00008210 r3 00000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? r4 00000000 r5 00000000 r6 00000000 r7 00000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? r8 00000000 r9 64a44e80 sl 00000000 fp 00000001
02-09 18:56:42.084 1902-1902/? I/DEBUG? ip 00000000 sp 64a44d20 lr 00000000 pc 4010e55c cpsr 20000010
02-09 18:56:42.084 1902-1902/? I/DEBUG? d0 443b400046180400 d1 44a6a00000000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? d2 0000053500000000 d3 00000000000002ed
02-09 18:56:42.084 1902-1902/? I/DEBUG? d4 0000000000000000 d5 000002ed0073e20e
02-09 18:56:42.084 1902-1902/? I/DEBUG? d6 00000535443b4000 d7 00002601443b4000
02-09 18:56:42.084 1902-1902/? I/DEBUG? d8 000000003f800000 d9 4049000000000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? d10 4049000000000000 d11 0000000000000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? d12 0000000000000000 d13 0000000000000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? d14 0000000000000000 d15 0000000000000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? d16 0000000000000001 d17 0000000000000000
02-09 18:56:42.084 1902-1902/? I/DEBUG? d18 000000000073bffb d19 000000000073cf5c
02-09 18:56:42.084 1902-1902/? I/DEBUG? d20 000000000073bf1b d21 0020002000200820
02-09 18:56:42.084 1902-1902/? I/DEBUG? d22 000000000073f44f d23 000000000073bd24
02-09 18:56:42.084 1902-1902/? I/DEBUG? d24 0820082008200820 d25 0020002000200820
02-09 18:56:42.084 1902-1902/? I/DEBUG? d26 0020002000200020 d27 0020002000200820
02-09 18:56:42.084 1902-1902/? I/DEBUG? d28 0020002000200020 d29 000000000073f41e
02-09 18:56:42.084 1902-1902/? I/DEBUG? d30 0820082008200020 d31 0020002000200020
02-09 18:56:42.084 1902-1902/? I/DEBUG? scr 80000013
02-09 18:56:42.099 1902-1902/? I/DEBUG? backtrace:
02-09 18:56:42.099 1902-1902/? I/DEBUG? #00 pc 0000e55c /system/lib/libc.so (memset+148)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #01 pc 0000144c /system/lib/libSEC_OMX_Core.so (SEC_OMX_Component_Unregister+16)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #02 pc 00001828 /system/lib/libSEC_OMX_Core.so (SEC_OMX_DeInit+44)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #03 pc 00000ae7 /system/lib/libstagefrighthw.so (android::SECOMXPlugin::~SECOMXPlugin()+18)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #04 pc 00000b0d /system/lib/libstagefrighthw.so (android::SECOMXPlugin::~SECOMXPlugin()+4)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #05 pc 0000c157 /system/lib/libstagefright_omx.so (android::OMXMaster::clearPlugins()+58)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #06 pc 0000c189 /system/lib/libstagefright_omx.so (android::OMXMaster::~OMXMaster()+12)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #07 pc 0000c1d1 /system/lib/libstagefright_omx.so (android::OMXMaster::~OMXMaster()+4)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #08 pc 0000aec3 /system/lib/libstagefright_omx.so (android::OMX::~OMX()+38)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #09 pc 0000af4d /system/lib/libstagefright_omx.so (android::OMX::~OMX()+4)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #10 pc 0000ef11 /system/lib/libutils.so (android::RefBase::decStrong(void const*) const+40)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #11 pc 0005399b /system/lib/libstagefright.so (android::sp<android::MPEG2PSExtractor::Track>::~sp()+18)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #12 pc 000810e3 /system/lib/libstagefright.so (android::MuxOMX::~MuxOMX()+30)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #13 pc 00081125 /system/lib/libstagefright.so (android::MuxOMX::~MuxOMX()+4)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #14 pc 0000ef11 /system/lib/libutils.so (android::RefBase::decStrong(void const*) const+40)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #15 pc 00055e7f /system/lib/libstagefright.so (android::ACodec::LoadedState::onShutdown(bool)+130)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #16 pc 00056d27 /system/lib/libstagefright.so (android::ACodec::LoadedState::onMessageReceived(android::sp<android::AMessage> const&)+106)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #17 pc 000066bd /system/lib/libstagefright_foundation.so (android::AHierarchicalStateMachine::onMessageReceived(android::sp<android::AMessage> const&)+80)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #18 pc 00007471 /system/lib/libstagefright_foundation.so (android::ALooperRoster::deliverMessage(android::sp<android::AMessage> const&)+188)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #19 pc 00006d25 /system/lib/libstagefright_foundation.so (android::ALooper::loop()+204)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #20 pc 0001103b /system/lib/libutils.so (android::Thread::_threadLoop(void*)+94)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #21 pc 00010bb5 /system/lib/libutils.so
02-09 18:56:42.099 1902-1902/? I/DEBUG? #22 pc 00012e00 /system/lib/libc.so (__thread_entry+48)
02-09 18:56:42.099 1902-1902/? I/DEBUG? #23 pc 00012558 /system/lib/libc.so (pthread_create+172)