ffmpeg学习笔记

ffmpeg学习笔记,第1张

ffmpeg学习笔记(2)——YUV420算法原理 一、YUV像素格式

YUV的组成格式如下图所示

Y:明亮度,即灰度值

U、V:颜色

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

缺点:

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

二、YUV像素格式分类

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

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

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

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

三、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计算速度要快很多。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/758040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-01
下一篇 2022-05-01

发表评论

登录后才能评论

评论列表(0条)

保存