我正在尝试解码帧,然后修改,然后编码为单独的文件。我在这里简化了代码:
encoder = MediaCodec.createEncoderByType(MIME_TYPE);
encoder.configure(outputFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
Surface surface2 = encoder.createInputSurface();
encoder.start();
final ImageWriter imageWriter = ImageWriter.newInstance(surface2, 30);
ImageReader imageReader = ImageReader.newInstance(1920, 1080, ImageFormat.JPEG, 30);
imageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
// this image should be processed here, and passed to ImageWriter
imageWriter.queueInputImage(image);
}
}, null);
// OutputSurface uses the EGL context created by InputSurface.
decoder = MediaCodec.createDecoderByType(MIME_TYPE);
decoder.configure(inputFormat, imageReader.getSurface(), null, 0);
decoder.start();
但我收到以下错误:
2020-01-09 02:32:58.487 20349-20383/android.media.cts E/AndroidRuntime: FATAL EXCEPTION: codec test
Process: android.media.cts, PID: 20349
java.lang.UnsupportedOperationException: The producer output buffer format 0x7fa30c06 doesn't match the ImageReader's configured buffer format 0x21.
at android.media.ImageReader.nativeImageSetup(Native Method)
at android.media.ImageReader.acquireNextSurfaceImage(ImageReader.java:450)
at android.media.ImageReader.acquireNextImage(ImageReader.java:504)
at android.media.ImageReader.acquireLatestImage(ImageReader.java:397)
我的代码是在 android 中正确构建解码-修改-编码视频吗?