0%

视频播放器原理、分辨率、帧率、码率

1581666181(1)

一、解协议

将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等。解协议的过程中会去除掉信令数据而只保留视音频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。

二、封装格式

  AVI(.avi)、MPEG(.mpg、.mp4)、Real Video(.rmvb)
封装格式,就是以怎样的方式将视频轨、音频轨、字幕轨等数据打包成一个文件的规范。说得通俗点,视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗或者一个锅,是用来盛放饭菜的容器。
  视频文件的封装格式并不影响视频的画质,影响视频画面质量的是视频的编码格式。
  解封装过程就是将其分离成为某种编码格式的音频压缩数据和某种编码格式的视频压缩数据,有时可能包含字幕和脚本。比如flv或ts格式的数据,解封装后得到H.264编码的视频码流和AAC编码的音频码流。

三、编码

  我们知道,其实视频就是一帧一帧的图片。计算一下,一部25帧每秒,90分钟,分辨率为1024*768,24位真彩色的视频,没有经过压缩,大小为
1Byte(字节) = 8bit(位)
一帧大小 = 1024 * 768 * 24 = 18874368(bit) = 2359296(Byte)
总帧数 = 90 * 60 * 25 = 135000
总大小 = 一帧大小 * 总帧数 = 2359296 * 135000 = 318504960000(Byte)= 303750(MB)≈ 296(GB)
  从上面的计算可以看出,我们储存一部90分钟没压缩的电影需要296GB的,2部电影便可占满我们电脑整个硬盘。所以我们需要对视频进行压缩,这种视频压缩技术就是我们所说的编码。
  视频编码方式:H.26X(H.261、H.262、…、H.264(目前最常用)、H.265)
  音频编码方式:MP3、AAC等
  通过视频压缩算法,减少了视频文件的大小。压缩比越大,解压缩还原后播放的视频越失真,这是因为压缩的同时不可避免的丢失了视频中原来图像的数据信息。
  解码就是将编码的视频解压缩处理,从而得到系统音频驱动和视频驱动能够识别的音频采样数据(如PCM数据)和视频像素数据(如YUV420P,RGB)。

四、视音频同步

  根据时间,帧率和采样率采用一定的算法,同步解码出来的视频和音频数据,并将视频音频数据送至显卡和声卡播放出来。

五、视频分辨率

1582105993(1)

  • 指的是视频图像在一个单位尺寸内的精密度。当我们把一个视频放大数倍时,就会发现许多小方点,这些点就是构成影像的单位——像素。
  • 视频的分辨率与像素密不可分,比如一个视频的分辨率为1280*720,就代表了这个视频的水平方向有1280个像素,垂直方向有720个像素。
  • 常见的:
    720P是指视频有720行像素 P是Progressive逐行扫描
    2K是指视频像素的总列数
    MP是像素总数,指像素的行数(P)与列数(K)乘积的结果(百万像素)
    1080P分辨率为192.*1080,总像素2073600,通常将1080P叫做200万像素分辨率
  • 通常视频在同样大小的情况下,分辨率越高,所包含的像素就越多,视频画面就越细腻、越清晰。
    参考:https://www.reneelab.com.cn/m/2k-4k-video-resolution.html

六、视频帧率

  • 帧率的单位是:FPS简写:P“如30fps和30p指的都是每秒钟播放30张图片的意思” 或者叫赫兹HZ
  • 高低帧率:低帧率会伴随模糊、卡顿、镜头移动时不顺畅等问题,但也不是越高越好,会造成眩晕的感觉
  • 不同帧率的视频在不同设备上播放:
    ①若一个播放设备最高支持60fps,在此设备上播放120fps的影片,则播放设备会每隔一张删除120fps的影片,被删除的图片成为无效帧。
    这就导致高帧率的影片在低帧率的设备上播放时,会降低播放流畅度。
    ②若一个播放设备最高支持120fps,在此设备上播放60fps的影片,则播放设备会每将每张图片复制一张,以填补空缺的帧。但是效果和60fps的设备上播放一样,对播放流畅度没有提升。

参考:https://www.sohu.com/a/316841339_120099897

七、视频码率(视频比特率)

  • 在“三、编码”中编码是为了压缩文件大小。压缩后已经是二进制数据了,从而有码率概念。
  • 单位是bps(bit per second)。在计算机中所有的数据都是二进制
  • 是在单位时间传输的数据量(二进制的个数),通常用Kbps、Mbps表示
  • 一般来说同样分辨率下,视频文件的码率越大,压缩比就越小,画面质量就越高。码率越高,精度就越高,处理出来的文件就越接近原始文件,图像质量越好,画质越清晰,要求播放设备的解码能力也越高。
    理解:提取一帧,图片画质越高,体积越大,需要传输的01越多。
    体积越大,说明压缩比小,越接近原文件。

帧率与码率的关系:帧率多,则图片数目多;码率越高,图片质量越清晰。
1581674663(1)

八、视频分析软件Mediainfo(快速查看视频信息)

Mediainfo是一款常用的视频分析软件,软件能够检测视频文件的格式、画面比例、码率、音频流、声道等一系列视频参数信息,并支持用户以表格、树状图、文本、XML、MPEG-7等格式进行预览与导出,而且支持用户批量操作,为用户提供完善的检测方案。我们可通过此软件,获取我们需要的视频数据。
1582101498(1)

九、FFmpeg解码器

十、浏览器对编码支持

目前ios和Android系统,浏览器都不支持播放H265编码的视频,如果不对这类视频进行特殊处理的话,对于投放平台和移动设备上广告展现效果,都将是只有声音流出的黑屏。
视解决方案:频进行转码处理,转化为H264编码,编码问题得到了解决。
1581836867(1)
如果不能播放,需要对此视频做转码处理。
在播放器测试中,也应该注意这一点。

十一、音频、视频、图片转码

在测试时,若要测各种格式,则需要自备素材。通过“格式工厂”软件就可以制造出所有格式。
“格式工厂”也是基于FFmpeg做的。

十二、视频性能测试点:

首帧响应时间:从点击播放按钮到出现第一帧画面所需要的时间
播放流畅度:帧率可以体现播放的流畅度,帧率越大画面越流畅
播放成功率:视频正常播放在总播放视频中的占比
功耗:即持续播放视频电量的消耗情况
内存:视频在播放过程中内存的占用情况,一般我们都会追求低内存
Cpu指标:视频播放过程中的cpu占用情况,cpu占用过高会引发功耗过高的情况
播放稳定性:长时间播放视频的播放质量
视频播放中的响应时间是一个很重要的测试指标,响应时间又分为,首帧响应时间、拖动响应时间两种。响应时间测试设计需要确定起始点和响应点,我们可以通过ffmpeg来获取视频的首帧图片作为响应基准。