HTTP 206 部分内容请求如何工作

How does HTTP 206 Partial Content Request works

为了pass 2个星期我一直在折腾,我还是想不通。 我正在尝试在 Python(用于 wpf GUI 的 Ironpython)上构建一个基于服务器-客户端的流媒体播放器来流式传输视频文件。我的问题是当客户请求搜索他尚未加载的部分时。当我尝试将 .mp4 文件的中间部分发送给他时,他似乎无法播放。

现在我知道这样的东西存在,因为每个在线玩家都有它,它使用 HTTP 206 部分内容请求,客户端只请求他想要的字节范围,服务器将它发送给他。

我的问题是 - 客户端如何播放他的 .mp4 文件中有字节间隔的视频 - 他如何开始观看文件的中间部分?当我尝试播放时,播放器就是打不开文件。

更重要的是:我怎样才能在我的服务器-客户端程序上实现它以启用自由搜索?

我真的试图在整个互联网上寻找一个简单的解释...... 请为我这样的新手解释清楚,深入浅出,不胜感激。

提前致谢。

在播放 MP4 文件之前,客户端(例如浏览器)需要读取文件的 header 部分。 MP4 被分解为 'Atoms',Moov 原子是文件的 header 或索引原子。

对于将被流式传输的 MP4 文件,常见的优化是将此 Moov 原子移动到文件的前面。

这允许客户端在开始时获取 moov,然后它将获得允许您跳转到您的案例所需的偏移量所需的信息。

如果您在开始时没有 moov 原子,则客户端需要下载整个文件,或者如果它更复杂一些,则使用范围请求在文件中跳转,直到找到它。