Ссылка: https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/ExtractDecodeEditEncodeMuxTest.javaEncodeDecodeMux - Samsung Devices - Испытано на S6 Краю и S5
Я использую приведенный выше код для кодирования/декодирования/MUX для того, чтобы сделать видео с более низким разрешением и битрейтом. Работает отлично на всех разрешениях, включая видео 4k на nexus5, LG g3, один плюс.
Но устройства Samsung показывают неуместное поведение.
Если я взять 4k видео (3840x2160) в качестве входных данных и хочу, чтобы понизить его разрешение до 1920х1080 я получаю исключение.
Если я беру 4k видео (3840x2160) в качестве входных данных и хочу снизить его разрешение до 1280x720, я все равно получаю исключение.
Он отлично работает, если я установил целевое разрешение 640x360.
Я думаю, это может быть связано с проблемами кодеков на устройствах samsung.
Ниже приведен фрагмент кода
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.
Samsung - это всегда борьба. Удачи! –
Может быть аппаратным ограничением, например. недостаточная пропускная способность в части кодека для обработки декодирования при 4K и кодирования на 720p. Сообщение об ошибке обычно бесполезно. – fadden
Вы нашли решение этой проблемы? –