我在使用MediaCodec时遇到一个奇怪的错误,当我有一个后台服务使用MediaCoded来处理视频并开始播放活动中的另一个视频时,就会发生这种情况。
错误的堆栈跟踪:
android.media.MediaCodec$CodecException: Error 0xfffffc03
at android.media.MediaCodec.native_configure(Native Method)
at android.media.MediaCodec.configure(MediaCodec.java:577
at net.protyposis.android.mediaplayer.MediaCodecVideoDecoder.configureCodec(MediaCodecVideoDecoder.java:47)
at net.protyposis.android.mediaplayer.MediaCodecDecoder.reinitCodec(MediaCodecDecoder.java:163)
at net.protyposis.android.mediaplayer.MediaCodecVideoDecoder.<init>(MediaCodecVideoDecoder.java:42)
at net.protyposis.android.mediaplayer.MediaPlayer.prepare(MediaPlayer.java:276)
at net.protyposis.android.mediaplayer.MediaPlayer$2.run(MediaPlayer.java:347)
at java.lang.Thread.run(Thread.java:818)
产生错误的MediaCodec调用:
@Override
protected void configureCodec(MediaCodec codec, MediaFormat format) {
codec.configure(format, mVideoSurface, null, 0);
}
Obs。: 这个问题只会在我的三星Galaxy S6上偶尔发生,而在我的One Plus X中它可以完美运行。
我无法解决这个问题所以我的解决方案是改变我的应用程序的架构,以便多次解码不会立刻发生。事实证明解码问题是由于实际的硬件限制而发生的,因此以特定格式解码多个视频可能会在某些设备中触发此类问题。
但是,如果有人找到解决这个问题的方法,那么无论如何都会有用。