前言
webrtc码率相关介绍
研究了好久的webrtc,一直想要自己计算webrtc视频的码率,但是一直没有找到具体的公式或者算法,困扰了很久,今天找到了计算方法,在这里记录一下。
一、webrtc码率计算?
BPP指数:每像素位数(BPP)是应用于视频文件中每个像素的平均数据量。通过将数据速率(kbps)除以视频的每秒像素数(像素宽度乘以高度像素乘以每秒帧数)来计算:
BPP = 数据速率/(分辨率*每秒帧数)
BPP通常在0.05到0.150之间,具体取决于场景中的运动量。运动越多,BPP应该越高。
BPP也与分辨率成反比:分辨率越低,在不产生巨大比特率的情况下BPP越高。这是因为与高分辨率视频相比,低分辨率视频中要复制或参考的总像素更少。
要基于BPP计算比特率的大小,
比特率 =(分辨率*每秒帧* BPP)/ 1000
一般bpp=0.11适合大部分编码器和编码标准,可达到比较好的视频效果
具体的bpp计算方式需要根据编码器来具体计算,
网上看到码流映射表,说是视频最佳码率,我们可以计算下bpp,根据公式计算下bpp,这样就不用
再也不用根据表格去匹配码率拉,简化代码的逻辑
{ //4:3
{ 160, 120, 65, 15 },
{ 180, 180, 100, 15 },
{ 240, 180, 120, 15 },
{ 240, 240, 140, 15 },
{ 320, 240, 200, 15 },
{ 360, 360, 260, 15 },
{ 360, 360, 400, 30 },
{ 480, 360, 320, 15 },
{ 480, 360, 490, 30 },
{ 480, 480, 400, 15 },
{ 480, 480, 600, 30 },
{ 640, 480, 400, 10 },
{ 640, 480, 500, 15 },
{ 640, 480, 750, 30 },
{ 960, 720, 910, 15 },
{ 960, 720, 1380, 30 },
{ 0, 0, 0, 0}
},
{ // 16:9
{ 320, 180, 140, 15 },
{ 424, 240, 220, 15 },
{ 640, 360, 400, 15 },
{ 640, 360, 800, 24 },
{ 848, 480, 610, 15 },
{ 848, 480, 930, 30 },
{ 960, 540, 800, 15 },
{ 960, 540, 1200, 30 },
{ 1280, 720, 1130, 15 },
{ 1280, 720, 1710, 30 },
{ 1920, 1080, 2080, 15 },
{ 1920, 1080, 3150, 30 },
{ 1920, 1080, 4780, 60 },
{ 2560, 1440, 4850, 30 },
{ 2560, 1440, 7350, 60 },
{ 3840, 2160, 8910, 30 },
{ 3840, 2160, 13500, 60 },
{ 0, 0, 0, 0}
}
总结
但是没有找到BPP的具体的算法公式,奈何音视频专业的知识也比较少,有大神知道可以指点下。