go语言ffmpeg推流 go语言流媒体开发( 二 )


比特率是指每秒传送的比特(bit)数 。单位为bps(Bit Per Second),比特率越高,传送的数据越大 。在视频领域,比特率常翻译为码率 比特率是指每秒传送的比特(bit)数 。单位为bps(Bit Per Second),比特率越高,传送的数据越大 。在视频领域,比特率常翻译为码率 !!!
比特率表示经过编码(压缩)后的音、视频数据每秒钟需要用多少个比特来表示,而比特就是二进制里面最小的单位,要么是0,要么是1 。比特率与音、视频压缩的关系,简单的说就是比特率越高,音、视频的质量就越好 , 但编码后的文件就越大;如果比特率越少则情况刚好相反 。比特率是指将数字声音、视频由模拟格式转化成数字格式的采样率,采样率越高,还原后的音质、画质就越好 。
我的理解是比特率与采样率概念相同,不过采样率是压缩前的比特率是压缩后的
VBR(Variable Bitrate)动态比特率 也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率 , 这是以质量为前提兼顾文件大小的方式,推荐编码模式;
ABR(Average Bitrate)平均比特率 是VBR的一种插值参数 。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式 。ABR在指定的文件大小内 , 以每50?。?0帧约1秒)为一段 , 低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择 。
CBR(Constant Bitrate) , 常数比特率 指文件从头到尾都是一种位速率 。相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高 。
帧速率也称为FPS(Frames PerSecond)的缩写——帧/秒 。是指每秒钟刷新的图片的帧数 , 也可以理解为图形处理器每秒钟能够刷新几次 。越高的帧速率可以得到更流畅、更逼真的动画 。每秒钟帧数(FPS)越多,所显示的动作就会越流畅 。
就是俗称的每秒多少帧,例如我们众所周知的动画24帧/每秒
就是帧大小每一帧就是一副图像 。
在手机上呈现的画面 , 第一帧与第二帧的图像中肯定有很多相同的画面 , 比如在一个固定的场所,背景不动 , 只有人物移动的情况 , 这时只需要重新绘制人物的移动就可以,背景不用重新绘制 。IPB帧就是用于处理这种情况 。
I帧:帧内编码帧  , I帧表示关键帧 , 你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)
P帧:前向预测编码帧 。P帧表示的是这一帧跟之前的一个关键?。ɑ騊?。┑牟畋穑?解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面 。(也就是差别?。?P帧没有完整画面数据,只有与前一帧的画面差别的数据)
P帧的预测与重构:P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送 。在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧 。
B帧:双向预测内插编码帧 。B帧是双向差别?。?也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况 , 但我这样说简单些) , 换言之,要解码B帧 , 不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面 。B帧压缩率高,但是解码时CPU会比较累 。
B帧的预测与重构
B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送 。接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧 。

推荐阅读