当图像宽高为奇数时,如何计算 I420 格式的uv分量大小

背景

I420 中 yuv 数据存放在3个 planes 中。

网上一般说 I420 数据大小为 widthheight 1.5

但是当 width 和 height 是奇数时,这个计算公式会有问题。

I420 中 u 和 v 的宽高分别为 y 的一半。

但是当不能整除时,是如何取整呢?向上还是向下,网上一般都没有细说。

求证过程

今天遇到个问题,和这个相关。网上查询和用 ffmpeg 实验了一下。

网上查询

问了 chatgpt

google 结果

https://groups.google.com/a/webmproject.org/g/webm-discuss/c/LaCKpqiDTXM

https://sourceforge.net/p/raw-yuvplayer/bugs/1/

使用 ffmpeg 测试

使用 windows 自动绘图系统,绘制3张 rgb 图片,保存成 bmp 图片。

使用 ffmpeg 命令将图片转化为视频。

使用 ffmpeg 命令将 Mp4 转换为 yuv420p 的 yuv 数据

使用 notepad 打开数据,计算 yuv 的数据长度。

最后计算结果和网络说的一样。

yuv player 播放该 yuv 数据正常

结论

uv 的宽高除以2,需要向上取整,以提高边缘像素精度。但是没有专业的定义,如果大家找到专业定义辛苦贴到评论中。

相关推荐
SCBAiotAigc5 天前
2026.2.25:conda与uv并存时,如何取消base激活
人工智能·python·conda·uv
wumingxiaoyao6 天前
从 requirements.txt 到 uv:多模块 Monorepo 的依赖管理升级指南(用法、特点、区别与最佳实践 + 例子)
pip·uv·pip tool
宸迪16 天前
【python】使用uv管理项目包依赖
linux·python·uv
铬锐特实业20 天前
自动化点胶+低粘度UV胶:流水线效率提升方案 |铬锐特实业
uv·光固化胶水·铬锐特·紫外线胶水·uv胶
放飞自我的Coder21 天前
【UV python包管理工具 简单应用足够】
python·uv
恒云客21 天前
FastAPI 容器化UV部署
前端·fastapi·uv
永霖光电_UVLED21 天前
LEDINTRO推出突破性无害230nm UV LED空气杀菌球
uv
TTGGGFF21 天前
UV 全命令速查手册
大数据·elasticsearch·uv
知识即是力量ol21 天前
亿级数据下的基数统计:从 Set 到 HyperLogLog 的进阶实战
redis·set·uv·bitmap·hyperloglog·亿级数据
玄同76521 天前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding