* 音视频的几个率
* 帧率fps
* 游戏中都有这个属于,大都指的是每秒显示的图像帧数,或者说图形处理器每秒更新的次数
* >=24fps 电影基本这个帧率
* <30fps 游戏卡顿
* >60fps 流畅
* >75fps 肉眼不容易察觉出变化
* 码率:又称比特率,指每秒传送的比特(bit)数
* 单位:bps(Bit Per Second),bit单位太小,所以有kbps, Mbps, Gbps…
* 回顾换算
* 1 MB = 1024 KB
* 1 KB = 1024 Bytes
* 1 Byte = 8 bits
* 音视频文件大小计算
* 文件大小 = bps *dur (bits) /8 (字节数) /1024 (KB) / 1024 (MB)
* 如时长4分钟,码率为128kpbs的MP3 ,size = 128*4*60/(8*1024) = 3MB , 视频文件大小计算方式一样
* 分辨率
* 8k: 7680×4320
* 4k: 4096×2160
* 2k: 2048×1080
* 1080P: 1920×1080
* 720P: 1280×720
* ……
* 其中mac pro分辨率为: 2560 x 1600 普通屏幕基本为1080p,可以明显看出差别。
* 当然分辨率越高越清晰,现市面上8k屏幕较少,价格昂贵,且对带宽要求较高,5g时代来临后,量产化可能会普及。
* 刷新率Hz
* 垂直刷新率和水平刷新率,一般提到的是垂直刷新率
* 垂直刷新率指的是屏幕上的图像每秒重绘的次数。
* 刷新率越高,图像越稳定,越好点,对眼睛越好,不容易疲劳。75Hz以上不易觉察闪烁和抖动
* PCM:Pulse Coding Modulation 脉冲编码调制:声音帧裸数据
* 量化格式
* 采样率:44.1Hz-->每秒钟采集44100个点,是指在每个声道上的采样速率,而不是所有声道的采样速率。
* 声道数:单声道、双声道、多声道
*
pcm是采集到声音的裸数据,需要进行音频编码(压缩-->编码)进行传输,播放音频时需要进行音频解码(解压->解码)为pcm裸数据通过android接口或声卡节点输出
* 颜色空间模型
* YUV:视频帧裸数据
* 是一种颜色编码方法,对于视频帧的裸数据的表示方式,其主要应用于优化彩色视频信号的传输,向后兼容老式黑白电视机。
* Y:明亮度,UV:色度、饱和度
* 人对色度相对不敏感,所以视频编码时,会适当降低色度的宽带。
* RGB
* 红绿蓝三通道
* 编解码
* 硬解
* 依靠硬件进行解码,通过显卡的视频加速功能对视频进行解码,可以理解为有一个专门的电路板来进行视频的解码工作,是依靠GPU
*
调用GPU的专门模块编码来解码,减少CPU运算。显卡核心GPU拥有独特的计算方法,解码效率非常高,这样不但能够减轻CPU的负担,还有着低功耗,发热少等特点。
* 视频编码格式多样,兼容性不好,对滤镜、字母、画质、美颜等支持不够理想
*
对于android设备,目前用得比较多的芯片就是高通、海思和联发科,这些芯片大都集成了很多的功能,CPU、GUP、DSP、ISP包括视频解码、音频解码等等
*
android中使用硬件解码的接口是MediaCodec,谷歌的ExoPlayer就是使用的MediaCodec进行解码。当然MediaPlayer也是android提供的硬件解码播放器,但是其封闭性,可够使用的接口并不能满足全部的需求,而且支持的协议较少,不好拓展。
* 硬编
* 依靠硬件进行编码,是硬解的对立方向操作。
* 软解
* 不依赖专门的硬件解码模块,依靠cpu运算来进行解码,因为不是独立模块,所有的程序都在用cpu,所以会增加cpu的运算
* 不需要依赖独立的硬件模块,兼容性较高。
* 依赖cpu性能,只要cpu够强悍,能做的事情也越多
* 软编
* 软解的反向操作,同软解。
* IPB帧
* 视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。
* I帧表示关键帧
* 这一帧画面的完整保留
* 解码时只需要本帧数据就可以完成
* 去掉的实在空间维度上的冗余信息
* 解码端必须接收到第一个I帧才可以正常解码出原始图片,否则无法正确解码
* 压缩率是7,与jpg差不多
* P帧表示前向预测编码帧
*
表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面,也叫差别帧、预测帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据。去掉的是在时间维度的冗余信息。
* 压缩率可以到20
* B帧是双向差别帧
*
也就是B帧记录的是本帧与前后帧的差别,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。去掉的是在时间维度的冗余信息。
* 压缩率可以达到50
* PTS和DTS
* PTS Decode TimeStamp: 解码时间戳
* DTS Presentation Time Stamp: 显示时间戳
* 由于IPB中B帧的存在导致下一帧被解码的时间会比显示的时间提前,导致PTS和DTS输出顺序不一致
* GOP:Group Of Picture
* 两个I帧之间的一组图片
* 必须为编码器设置gop_size
* gop_size数值越大,画面质量越好。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信