为啥较大的视频流比较小的视频更快?

Posted

技术标签:

【中文标题】为啥较大的视频流比较小的视频更快?【英文标题】:Why does the larger video stream way faster than the smaller video?为什么较大的视频流比较小的视频更快? 【发布时间】:2019-11-07 15:54:15 【问题描述】:

我有 2 个示例视频(v1 50MB 和 v2 150MB)。它们是相同的视频,其中 v1 从 v2 缩小。

v1 位于我们的 firebase 存储桶中,而 v2 是在线提​​供的示例视频。但是,如果我尝试在 react-native 或什至在 Web 浏览器中流式传输 v1,则流式传输是数量级(开始播放需要一分钟)而不是 v2(几秒钟后开始)。

可能是什么问题?看起来简单的网址在 react-native-video 中完美地流式传输和缓冲,而 firebase 网址“似乎”是先下载然后播放。

【问题讨论】:

【参考方案1】:

问题在于moov 框(所有元数据的容器)在 MP4 文件中的位置。在v1 的情况下,它位于末尾,需要下载整个文件才能开始播放。在v2 的情况下,它被放置在开头,因此可以立即开始播放。需要优化v1,查找MP4快速启动。

【讨论】:

确实是这个问题。当我在同一个存储桶中上传 v2 时,文件会正常流式传输 => 清楚地暗示问题出在文件上。 @EFreak 看下压缩时的编码选项,一定有办法启用它。 我正在 android 设备上执行此操作,但尚未使用 MediaCodec 找到解决方案。然而,我的后续行动是,即使在移动 moov 框之后,视频的加载速度仍然比 v2 慢(10 秒对 2 秒)。这里流式传输还有其他技巧吗? @EFreak 两者都在同一台服务器上?如果一个在不同的服务器上,路由/延迟可能会有所不同。 是的。它们在同一个桶中。并且加载差异是一致的。【参考方案2】:

我一直在寻找这个。我有一个视频,它首先被完全“下载”,然后开始播放。

视频的元数据似乎在视频的末尾。

然后我下载了“MP4 fast-start”,它以某种方式优化了视频。视频开始播放前的时间立即从 10-12 秒减少到 2-4 秒。

【讨论】:

以上是关于为啥较大的视频流比较小的视频更快?的主要内容,如果未能解决你的问题,请参考以下文章

VR 视频识别率测试方案

为啥我的电脑录制视频的时候很卡?

尼康视频文件丢失的恢复方法

图像识别基于主成分分析PCA实现视频人脸识别matlab源码

图像识别基于主成分分析PCA实现视频人脸识别matlab源码

为啥苹果手机的视频播放不了?