【发布时间】:2016-03-15 09:40:54
【问题描述】:
我正在使用上述代码进行编码/解码/复用,以便制作具有较低分辨率和比特率的视频。 它适用于所有分辨率,包括 nexus5、LG g3、one plus 上的 4k 视频。
但三星设备表现出不当行为。
如果我将 4k 视频 (3840x2160) 作为输入并希望将其分辨率降低到 1920x1080,我会遇到异常。
如果我将 4k 视频 (3840x2160) 作为输入并希望将其分辨率降低到 1280x720,我仍然会遇到异常。
如果我将目标分辨率设置为 640x360,效果会非常好。
我认为这可能与三星设备上的编解码器问题有关。
下面是代码sn-p
MediaCodec encoder = MediaCodec.createByCodecName(codecInfo.getName());
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
surfaceReference.set(encoder.createInputSurface());
encoder.start();
MediaCodec decoder = MediaCodec.createDecoderByType(getMimeTypeFor(inputFormat));
decoder.configure(inputFormat, surface, null, 0);
decoder.start();
以下语句导致异常
decoder.configure(inputFormat, surface, null, 0);
下面是堆栈跟踪
I/ACodec: [OMX.Exynos.AVC.Encoder] Now Executing
03-15 14:35:23.801 25357-26008/com.test I/ACodec: [] Now uninitialized
03-15 14:35:23.801 25357-26036/com.test I/OMXClient: Using client-side OMX mux.
03-15 14:35:23.811 25357-26036/com.test I/ACodec: can't find wfdsink-exynos-enable
03-15 14:35:23.811 25357-26036/com.test E/ACodec: configureCodec multi window instance fail appPid : 25357
03-15 14:35:23.811 25357-26036/com.test E/ACodec: [OMX.Exynos.avc.dec] configureCodec returning error -1021
03-15 14:35:23.811 25357-26036/com.test E/ACodec: signalError(omxError 0x80001001, internalError -1021)
03-15 14:35:23.811 25357-26035/com.test E/MediaCodec: Codec reported err 0xfffffc03, actionCode 0, while in state 3
03-15 14:35:23.811 25357-26008/com.test E/MediaCodec: configure failed with err 0xfffffc03, resetting...
03-15 14:35:23.811 25357-26036/com.test I/ACodec: [OMX.Exynos.avc.dec] Now uninitialized
03-15 14:35:23.811 25357-26008/com.test I/ACodec: [] Now uninitialized
03-15 14:35:23.811 25357-26036/com.test I/OMXClient: Using client-side OMX mux.
【问题讨论】:
-
三星一直在奋斗。祝你好运!
-
可能是硬件限制,例如编解码器部分的带宽不足以处理 4K 解码和 720p 编码。错误消息通常没有帮助。
-
你找到解决这个问题的方法了吗?
标签: android samsung-mobile codec android-mediacodec mediamuxer