欢迎诸位来阅读在下的博文~
在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力
文章目录
前期博客
一、视频录制和播放原理
这里的文件可以是mp4文件,也可以是其它格式的文件。我们可以想象每一个媒体文件就像一个盒子,里面放置了各种数据,如音频数据、视频数据、文件属性等等。就这些数据都放在一起是为了节省空间,还有方便传输。想象一下,如果诸位要发送一个多媒体视频给朋友,一个文件就是一个完整体,直接发送即可;可是如果不将各种数据集成到一起,你要从各种角落去寻找相应的数据去发送,是不是很麻烦,比如这个文件对应音频数据,这个文件对应视频数据,···,这下头都大了。
二、数字图像的存储方式
RGB方式
对于一幅图像,一般使用整数表示方法来进行描述,比如计算一张分辨率为1280*270的
RGB_888图像的大小,可采用如下方式:1280 * 270 * 3B = 2.637MB;
假如是一部90分钟的电影,每秒25帧,则一部电影为
2.637MB * 90分钟 * 60秒 * 25FPS= 347.651GB
YUV格式
用途:主要用于视频信号的压缩、传输和存储,和向后相容老式黑白电视。
其中“Y”表示明亮度(Luminance或Luma),也称灰阶值;
“U”和“V”表示的则是色度(Chrominance或Chroma)作用是描述影像色彩及饱和度,用于指定像素的颜色。
为什么YUV格式可以用来压缩视频呢?
科学家分析出,人的眼球对于灰度的敏感性,要比色度大得多。比如诸位看图上的黑白照片,可以一下子就知道这是一个眼睛,但是看第三张的色度图片时,真不好区别。所以人们就想到,能不能在完好保存Y(灰度)的情况下,在UV上进行一些“偷工减料”,以达到压缩视频的目的呢?答案是肯定的。
YUV格式有两大类:planar和packed。
◼ 对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存
储所有像素点的U,随后是所有像素点的V。
◼ 对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。
◼ Libyuv,Google开源的实现各种YUV与RGB之间相互转换、
旋转、缩放的库。
YUV存在多种格式,比如YUV420p,YUV420sp等,不同的YUV格式的数据在存储时的排列顺序是不一样的,在开发的过程中必须非常注意,否则画面会显示不正常。比如花屏,绿屏等现象。
YUV 4:4:4采样,每一个Y对应一组UV分量。
YUV 4:2:2采样,每两个Y共用一组UV分量。
YUV 4:2:0采样,每四个Y共用一组UV分量。
由上往下,压缩的效率会越来越大。
同样是一部90分钟的1280270电影,每秒25帧,则一部电影ÿ