ffmpeg - 转换为 yuv422p 像素格式不正确
问题描述
设置:
通过 RTSP 实时传输 h.264 编码视频的摄像机
一个使用 FFMPEG 抓取 H.264 数据包片段的 Android 应用程序,将其转换为像素格式 yuv422 的 mjpeg 帧。
一个单独的应用程序通过 udp 接收所述 jpeg 图像,期望它们采用 yuv422 像素格式,并显示流。
所有这些组件之间的桥梁完美地工作,#2 获取帧并将其发送到#3,#3 验证它接收。但是,#3 不会显示,因此在仔细检查它收到的数据包后,我在每个数据包的 jpeg 图像标头中发现水平-垂直二次采样因子不是 YUV422 的预期值。它是 0x22,尽管对于 YUV422,我们应该期望水平色度分辨率减半(所以我们应该期望 0x21)
这是我使用的 ffmpeg 命令:
ffmpeg -i rtsp://****:*** -vcodec mjpeg -pix_fmt yuv422p -f mjpeg udp://*******
会发生什么?默认编解码器是否不支持这种转换?
解决方案
消费空间中的大多数视频是 4:2:0 而不是 4:2:2。所以尝试像 YVU420 ('YV12')、YUV420 ('YU12') 或其他一些 4:2:0 这样的像素格式。
推荐阅读
- react-native - 重定向链接不正确(在 expo 应用程序中发现身份验证)
- rabbitmq - 为什么要用rabbitMQ代替ocelot api gateway
- powershell - 使用powershell将文本文件数据转换为excel
- java - 如何将 HtmlLink 上传到 Android WebView
- c++ - 无法识别文件“Lenna.jpg”的格式。在抛出 'cimg_library::CImgIOException' 的实例后调用终止
- typo3 - DDEV-Local 403 Forbidden on provided URL with ddev start 或 ddev launch(docroot 错误)
- android - 在 ScrollView 中设置 GridLayout 时布局拉伸
- c# - 仅显示活动记录并使用 linq c# 删除过期记录
- c++ - OpenGL:圆柱体在旋转 90 度后变形
- java - 房间数据库迁移问题