ffmpeg学习笔记(2)-YUV420算法原理

ffmpeg学习笔记(2)——YUV420算法原理

一、YUV像素格式

YUV的组成格式如下图所示
在这里插入图片描述

Y:明亮度,即灰度值

U、V:颜色

YUV格式将亮度信息和色彩信息分离,没有色彩信息依然能够显示图像(没有色彩信息),很好的解决了彩色电视机与黑白电视机的兼容问题(这也是最初的设计目的)。

缺点:

YUV格式不能直接用于显示,需要转换成RGB格式。

二、YUV像素格式分类

YUV按照采样的格式分为三种(严谨一点其实是四种,但YUV411很不常用):

YUV444:完全采样,1个Y值对应1个U值和1个V值

YUV444

YUV422:半采样,2个相邻Y值公用共用1个相同的U/V值

YUV422

YUV420:1/4采样,4个像素平面上相邻的Y值公用一个U/V值(最常用)

YUV420

三、YUV2RGB格式转换

由于YUV格式不能直接用于显示,所以需要先将YUV格式的数据转换为RGB格式。格式的转换过程涉及到了大型数组的计算,因此会比较耗时。

YUV格式到RGB的转换公式如下:

R = Y + 1.4075 ∗ ( V − 128 ) R=Y+1.4075*(V-128) R=Y+1.4075(V128)

G = Y − 0.3455 ∗ ( U − 128 ) − 0.7169 ∗ ( V − 128 ) G=Y-0.3455*(U-128)-0.7169*(V-128) G=Y0.3455(U128)0.7169(V128)

B = Y + 1.779 ∗ ( U − 128 ) B=Y+1.779*(U-128) B=Y+1.779(U128)

RGB到YUV的转换公式:

Y = 0.30 R + 0.59 G + 0.11 B Y=0.30R+0.59G+0.11B Y=0.30R+0.59G+0.11B

U = 0.493 ( B − Y ) U=0.493(B-Y) U=0.493(BY)

V = 0.877 ( R − Y ) V=0.877(R-Y) V=0.877(RY)

在利用ffmpeg对视频文件进行解码显示的过程中,可以使用OpenGL的shader来完成像素格式转换过程,比使用CPU计算速度要快很多。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只双鱼儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值