【发布时间】:2016-02-21 23:55:13
【问题描述】:
我有一个关于如何分段流式传输大型视频的问题。假设我有一个 1G 大的视频,我想分成 10 个相等的部分(每个约 100MB)。现在我想做的是有一个视频播放器(最好是 HTML5 /JS,而不是 Flash Player),从头到尾播放这 10 个视频,中间没有任何明显的间隙。
这样做的目的是确保在用户没有观看整个视频的情况下不会下载整个视频。
这是没有意义的练习吗? 您是否真的通过考虑这种实现来节省带宽? 已经有这样的解决方案了吗?
谢谢!
【问题讨论】:
-
有这样的解决方案——业内所有最大的参与者(YouTube、Netflix 等)都在使用经过充分测试的行业标准解决方案。看看 HLS 和 MPEG-Dash,它们都将视频分成比您想象的要小得多的片段。两种解决方案都有多个 HTML5 实现。是的,您可以通过这种方式节省大量带宽。
-
感谢 jlmcdonald,这真的很有帮助。是否已经有 HLS 或 MPEG-Dash 的服务器端实现,例如在 Apache 中?我想我想知道的是是否有客户端和服务器端解决方案可以将您的视频分段分解,而无需您手动执行此操作。
-
HLS 和 MPEG-Dash 都旨在处理通过常规 HTTP 提供的文件,因此根本不需要流服务器。但就您关于分段的问题而言,您可以选择 A) 用户使用动态分段的流服务器(如 Wowza),或 B) 使用 ffmpeg、Apple 的 mediasegmenter 等工具预先分段所有内容。请参阅此链接可帮助您找到正确的方向:hlsbook.net/segmenting-video-with-ffmpeg
-
谢谢 ljmcdonald。在说明使用破折号不再需要分段文件之前,我看过一个视频,但是我找不到如何实现这样的事情(也许还不可能)。我已经能够使用 ffmpeg 分割文件,但我想知道是否有一个库或模块可以像 wowza 一样自动处理这个。我假设我需要自己写?
标签: video video-streaming html5-video