【音视频】1.音视频基本概念

  • 音视频的几个率
    • 帧率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数值越大,画面质量越好。

猜你喜欢

转载自blog.csdn.net/qq_30124547/article/details/90582492