我正在尝试直接从android 设备的相机流式传输视频捕获。到目前为止,我已经能够从 android 相机的onPreviewFrame (byte[] data, Camera camera) 函数捕获每一帧,对数据进行编码,然后成功解码数据并显示到表面。我使用 android 的MediaCodec进行编码和解码。但是视频的颜色和方向不正确 [旋转 90 度]。搜索了一段时间后,我发现了这个 YV12toYUV420PackedSemiPlanar 函数 - 如果我在将原始相机数据传递给编码器之前在原始相机数据上使用这个函数,颜色显示正确,但它仍然旋转了 90 度。
public static byte[] YV12toYUV420PackedSemiPlanar(final byte[] input, final int width, final int height) {
final int frameSize = width * height;
final int qFrameSize = frameSize/4;
byte[] output = new byte[input.length];
System.arraycopy(input, 0, output, 0, frameSize);
for (int i = 0; i < (qFrameSize); i++)
{
byte b …Run Code Online (Sandbox Code Playgroud) android video-encoding video-streaming h.264 android-mediacodec