当图像宽高为奇数时,如何计算 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,需要向上取整,以提高边缘像素精度。但是没有专业的定义,如果大家找到专业定义辛苦贴到评论中。

相关推荐
从零开始学习人工智能5 天前
快速搭建 uv 开发环境:创建虚拟环境 + 导入 requirements-dev.txt 依赖
uv
Learn-Share_HY6 天前
[Python]如何用uv套件建置python專案與虛擬環境?
python·ai·virtualenv·uv·server·mcp·cline
励志前端小黑哥8 天前
uv包管理器--python也有自己的pnpm了
开发语言·python·uv
小明_GLC14 天前
关于新项目在PyCharm中自动构建UV环境的问题
ide·pycharm·uv
Anesthesia丶17 天前
UV工具学习笔记
笔记·学习·uv
爬台阶的蚂蚁25 天前
内网麒麟系统安装 uv 的完整步骤
运维·服务器·uv
爬台阶的蚂蚁25 天前
使用 UV 工具管理 Python 项目的常用命令
python·uv
瑞禧生物ruixibio1 个月前
CAS:1628029-06-0,UV-Tracer-炔-琥珀酰亚胺酯,光学特性
uv
道之极万物灭1 个月前
Python uv虚拟环境管理工具详解
开发语言·python·uv
爱幻想-hjyp1 个月前
【Python】uv包管理器常用命令
开发语言·python·uv