文 / BRIAN DIPERT

原文链接 / https://blog.addpipe.com/typical-video-bitrates-with-html-media-capture-and-mediastream-recording-api/

最近有人问我们关于视频码率与文件大小的问题:对于低、中、高质量的,比如1分钟的视频响应,有典型的文件大小吗?

我的直接回答是这取决于许多因素,但后来我意识到我应该尝试挖掘数据。在我们的大型数据集中,我们应该找一些典型码率,特别是在处理大容量数据时的码率。

我们已经研究了从用户那里采集视频的两种机制以及它们产生的码率:

1.MediaStream Recording API:由我们的(内联)桌面录制客户端使用

2.HTML Media Capture:由我们的本地移动录制客户端使用

MediaStream Recording API

由于此API允许你从你的摄像头请求分辨率,我们看了3个典型的分辨率应该支持大多数USB/集成网络摄像头:

我们从数据库中提取了2021年以该分辨率录制的第一万个视频,然后通过浏览器(Chrome 和 Firefox)进一步过滤。

如何根据网络环境切换码率(判别典型的码率)(1)

对于分辨率为320x240的视频:

我怀疑码率的不同主要是因为Firefox(仅)使用VP8压缩视频数据,而Chrome使用的是H.264。

此外,我们没有所有视频的用户代理信息,这就是为什么视频的数量加起来没有达到一万。

对于分辨率为640x480的视频:

如何根据网络环境切换码率(判别典型的码率)(2)

对于分辨率为1280x720的视频:

有了高清录制,可以对摄像机质量和光线设置带来的差异留有余地(低光照环境产生的噪声图像很难有效编码)

你会看到两条平行的铬线在2Mbits/s标记附近。上面的是Windows上的Chrome,而下面的是macOS上的Chrome。我可能是错的,但我怀疑他们使用的是不同的H.264编码器。如果不是这样的话,那就是每个macOS设备上都有FaceTime摄像头。

下图是按操作系统划分的Chrome数据。

如何根据网络环境切换码率(判别典型的码率)(3)

HTML Media Capture

这个API允许依靠操作系统的应用和功能来采集音频和视频。它适用于Android和iOS/iPadOS(但不能只用于音频录制)。

使用HTML Media Capture不能控制或指定分辨率,但是从以往经验来看,我们知道:

iOS & iPadOS

如何根据网络环境切换码率(判别典型的码率)(4)

所以你可以看出:

1.当现场抓拍视频的时,894kbits/s(和480x360分辨率)

2.当选择库中一个预先录制的视频时,2.69 Mbits/s(和1280x720)

3.平均1.8 Mbits/s

我们还查看了通过HTML Media Capture从iOS/iPadOS获得的分辨率不同于480x360、1280x720及其纵向变体的视频数量。在一万个视频中,只有548个有不同的分辨率。

Android

使用Android上的HTML Media Capture,你可以获得设备上配置的任何内容。因此,我们看到了相当多的4k视频。因为你不能要求一个特定的分辨率,我们只计算了所有10k视频的平均分辨率为12.9 Mbits/s。

如何根据网络环境切换码率(判别典型的码率)(5)

这是相同的数据,但按码率排序,可以更好地看到在20 Mbits/s标记附近的分组。

这些数字与来自浏览器的数据非常相关。在处理这些文件并对其中一些数据进行转码之后,数字可能会有所不同。例如,我们将VP8视频数据从Firefox转换为H.264,将Opus音频数据转换为AAC。

,