首页 > 解决方案 > 转换为 yuv422p 像素格式不正确

问题描述

设置:

  1. 通过 RTSP 实时传输 h.264 编码视频的摄像机

  2. 一个使用 FFMPEG 抓取 H.264 数据包片段的 Android 应用程序,将其转换为像素格式 yuv422 的 mjpeg 帧。

  3. 一个单独的应用程序通过 udp 接收所述 jpeg 图像,期望它们采用 yuv422 像素格式,并显示流。

所有这些组件之间的桥梁完美地工作,#2 获取帧并将其发送到#3,#3 验证它接收。但是,#3 不会显示,因此在仔细检查它收到的数据包后,我在每个数据包的 jpeg 图像标头中发现水平-垂直二次采样因子不是 YUV422 的预期值。它是 0x22,尽管对于 YUV422,我们应该期望水平色度分辨率减半(所以我们应该期望 0x21)

这是我使用的 ffmpeg 命令:

ffmpeg -i rtsp://****:*** -vcodec mjpeg -pix_fmt yuv422p -f mjpeg udp://*******

会发生什么?默认编解码器是否不支持这种转换?

标签: ffmpegh.264mjpeg

解决方案


消费空间中的大多数视频是 4:2:0 而不是 4:2:2。所以尝试像 YVU420 ('YV12')、YUV420 ('YU12') 或其他一些 4:2:0 这样的像素格式。


推荐阅读