我目前正处于网络摄像头流媒体服务器项目中,该项目需要根据客户端的设置(屏幕大小,处理能力......)或网络带宽动态调整流的比特率。编码器是ffmpeg,因为它是免费和开源的,编解码器是MPEG-4第2部分。我们使用live555作为服务器部分。
如何使用ffmpeg对MBR MPEG-4视频进行编码以实现此目的?
答案 0 :(得分:0)
您正在描述的多比特率视频称为"可伸缩视频编解码器"。有关基本了解,请参阅此wiki链接。
基本上,在可伸缩视频编解码器中,基本层流本身具有完全可解码性;然而,附加信息以(一个或多个)增强流的形式表示。有几种技术可以做到这一点,包括更低/更高的分辨率,帧率和量化的变化。以下论文详细解释 分别为MEPG4和H.264的可伸缩视频编码。这是另一个good paper,它解释了你打算做什么。
不幸的是,这是一个广泛的研究课题,到目前为止,没有开源(ffmpeg和xvid)不支持这种多层编码。我想甚至商业编码器也不支持这一点。这非常复杂。您可以查看H.264的Reference encoder是否支持它。
替代(但CPU昂贵)方式可以在传输数据包时实时转码。在这种情况下,您应该从相当好的质量开始。如果您使用FFMPEG作为API,它应该不是问题。通常,多个分辨率仍然可能很乱,但您可以继续更改目标编码率。