使用avconv根据带宽实时转码视频文件

时间:2017-04-20 20:53:49

标签: video avconv transcode

我有一个Apache网络服务器,我有几个视频。我还有最终用户登录我的服务器并流式传输这些视频。问题是其中一些视频非常大,有时用户的带宽无法支持。

以下是我想要做的事情:当用户流式传输视频时,我希望该视频能够根据其可用带宽实时转码如果他们的带宽较低,降低fps或bps。如果它更高,请提高它等。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

虽然可以使用实时转码方法,但更常见的做法可能是将视频转码为多种不同的比特率格式,并允许客户选择哪一种请求下一个'&#39 ;视频来自他们当前的网络状况。

这种方法称为自适应比特率流,并使用HLS和MPEG-DASH等流格式。

最终,它是处理开销和存储开销之间的权衡:

  • 实时转码方法要求您只存储一个视频副本以便为用户提供服务,但每次用户想要查看视频时,您都需要对视频进行转码(除非您存储的一个代码转换适用于它们) )。
  • ABR方法要求您为要提供的每个比特率存储视频副本,但您只需要进行一次转码(对于每个比特率)。

视频的预期观看情况使问题变得更加复杂 - 如果视频每年仅观看一次或两次,则存储会成为一个更大的问题,如果每天有100,000名用户观看视频,则处理更大的问题视频。

作为一个注释,您描述的方法与实时ABR流非常相似 - 实时流将实时(或尽可能接近)转码为例如5个不同的比特率流和客户端将请求视频,例如,10秒块。客户端根据网络条件决定从哪个比特率流中获取下一个块。

与您的提案的主要区别在于,所有比特率都在不断产生,而不仅仅是客户当时要求的比特率。

在实践中,如果有足够大的客户端和网络条件的传播,这两种方法实际上是相同的 - 即如果您有足够的客户端和足够的不同网络条件,您将创建全系列的低带宽和高带宽流,无论如何。