You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFMPEG转换为yuv422p像素格式异常,MJPEG子采样因子不符合预期

问题根因

该问题并非默认编解码器不支持格式转换,是FFmpeg内置MJPEG编码器的默认参数配置未匹配所需的YUV422子采样标识规则:

  • 命令中-pix_fmt yuv422p仅指定编码前的帧像素格式为YUV422平面格式,但MJPEG编码器本身会默认根据输出场景调整帧头中的子采样因子,默认针对UDP输出的流会将YUV422对应的子采样因子写为0x22(对应水平、垂直色度均下采样2倍,实际为YUV420的标识),而你需要的0x21是仅水平下采样2倍的标准YUV422标识。
  • 额外潜在影响点:FFmpeg默认使用的yuv422p是全量像素范围格式,而部分MJPEG解码器期望的是yuvj422p(带JPEG标准量化范围的YUV422格式),像素范围不匹配也可能导致后续解码展示异常。
修复方案

调整FFmpeg命令,添加MJPEG编码器私有参数强制指定子采样规则,同时明确像素格式范围即可:

ffmpeg -i rtsp://****:*** -vcodec mjpeg -pix_fmt yuvj422p -subsampling 2,1 -f mjpeg udp://*******

参数说明:

  • -pix_fmt yuvj422p:指定使用JPEG标准的YUV422像素格式,匹配大多数MJPEG解码器的预期像素范围
  • -subsampling 2,1:强制MJPEG编码器在帧头中写入水平子采样2倍、垂直子采样1倍的参数,对应你需要的0x21标识

如果使用的FFmpeg版本较低不支持-subsampling参数,可以额外添加比特流过滤器修改帧头标识:

ffmpeg -i rtsp://****:*** -vcodec mjpeg -pix_fmt yuvj422p -bsf:v mjpeg_metadata=samp_h=2:samp_v=1 -f mjpeg udp://*******

内容的提问来源于stack exchange,提问作者SOSparachuter1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:06:01