在摄像机捕捉过程中分割视频,提高上传效率



我想开发一个Android应用程序,用手机的摄像头捕捉视频,然后将视频(作为单个文件)上传到云端。然后我想通过将录制的视频分割成小块(比如5秒)并将这些块上传到云端来提高效率。然后比较两种方法,并表明第二种方法更有效,并提供更快的上传速度。

分块方法是否更有效?以什么方式?我该如何实现呢?我是否应该等到视频完成,然后将它们分块,或者我们可以在捕获过程中实时进行?任何建议或经验肯定会有所帮助。

将视频分成多个块并并行执行编码或打包等处理,是目前VOD视频的一种非常常见的技术。

只要你有计算资源来并行处理任务,它就允许更快的处理,这是许多多核计算机和云所拥有的。

它还允许您在资源最可用时安排处理,例如在其他作业的低负载期间,或者当它们最便宜时,这可以帮助降低云计算成本。

很难说这种方法是否更有效,因为这取决于你要测量的东西——如果你把所有的计算指令或周期加起来,这种方法实际上很可能需要更多的时间,但由于上述原因,它通常是首选的方法。

对于视频传输或传输,如果你能够在不同的路径上发送不同的块,每条路径都有一个可以填充该段的限制,这确实可以节省时间或提高效率。

然而,如果你的设备有一个单一的传输路径,例如它是WiFi IP连接,那么就不清楚分割视频是否会有好处,而不仅仅是当你通过IP网络逐个数据包发送它时已经发生的视频"分解"。

如果你的目标是快速视频传输,那么可能值得看看一些用于快速高效实时视频传输的专业协议。其中一些可能是基于UDP而不是TCP的,如果是这样,您可能需要检查您的目标网络防火墙和路由规则是否支持它们。SRT将是一个很好的例子,如下所示,还有其他的例子,比如ZiXi,它是私有的:

  • https://en.wikipedia.org/wiki/Secure_Reliable_Transport

关注传输,互联网视频流实际上被分解成块,因为它们是通过分组网络传递的。除了编码和容器(例如mp4)分组之外,视频流还将在更高的级别上经常进行"分块",以支持ABR协议,该协议将视频分割以允许在不同的比特率再现之间切换(参见:https://stackoverflow.com/a/42365034/334402)。

将视频分成块也可以帮助播放,如果块可以在整个视频下载之前开始播放-这也是互联网上大多数流媒体视频的典型情况。

如果我们忽略不同协议重试,数据包丢失等策略的任何影响,并且如果您有一个设置容量的单个传输"管道",将视频分成块并不能使其更快地传输。

然而,如果你有多个传输"管道",那么将视频分解并在不同的管道上并行发送不同的部分可能确实会加快它的速度。重要的要记住,即使是这样,你是有限的,如果视频直播,直播视频速度本身——即你不能传输视频的速度比源生产。

相关内容

  • 没有找到相关文章