是否可以在没有表面的情况下使用 mediacodec 对视频进行编码?

Is it possible to encode video with mediacodec without a surface?

我找到了很多关于如何使用 MediaCodec 对视频进行编码的示例,但它们都必须创建一个输入表面。可以在没有输入表面的情况下编码视频吗?一个代码示例将是一个很大的帮助,谢谢!

是的,您也可以将其配置为使用普通的 YUV 颜色作为输入格式,并用这种格式的数据手动填充输入缓冲区。其中一个例子是 https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java - 请参阅 encodeDecodeVideoFromBuffer、selectColorFormat 和 generateFrame 方法。