Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python HTTP 206部分内容请求是如何工作的_Python_Video_Video Streaming_Httprequest_Buffering - Fatal编程技术网

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

Python HTTP 206部分内容请求是如何工作的,python,video,video-streaming,httprequest,buffering,Python,Video,Video Streaming,Httprequest,Buffering,在过去的两个星期里,我一直头晕目眩,但我还是不明白。 我正在尝试在Python(用于wpf GUI的Ironpython)上构建一个基于服务器客户端的流媒体播放器,用于流媒体视频文件。我的问题是,当客户请求查找尚未加载的零件时。当我试图将.mp4文件的中间部分发送给他时,他似乎无法播放该文件 现在我知道这样的东西是存在的,因为每个在线播放器都有它,它使用HTTP 206部分内容请求,客户端只请求他想要的字节范围,服务器将它发送给他 我的问题是-客户端如何能够播放其.mp4文件中有字节间隔的视频-

在过去的两个星期里,我一直头晕目眩,但我还是不明白。 我正在尝试在Python(用于wpf GUI的Ironpython)上构建一个基于服务器客户端的流媒体播放器,用于流媒体视频文件。我的问题是,当客户请求查找尚未加载的零件时。当我试图将.mp4文件的中间部分发送给他时,他似乎无法播放该文件

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

我的问题是-客户端如何能够播放其.mp4文件中有字节间隔的视频-他如何开始观看文件的中间部分?当我似乎尝试它的球员只是不愿意打开文件

更重要的是:如何在我的服务器客户端程序上实现这一点以启用免费搜索

我真的试图在互联网上找到一个简单的解释。。。 请向我这样的新手详细、简单地解释一下,我将不胜感激


提前感谢。

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

对于将要流式传输的MP4文件,一个常见的优化方法是将此Moov原子移动到文件的前面

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


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

但是一旦有了moov atom,我如何让它播放文件的中间部分?moov atom包含文件中每个帧的字节偏移量。解析atom,找到一个同步帧,找到块偏移量并从该字节下载。浏览器比跳转更聪明。如果他们在文件的开头没有看到MOOV原子,他们会从文件的结尾下载一些字节(不同,不知道为什么)。现在他们有了MOOV,他们发送了第三个也是最后一个请求来流式传输文件。@GregBell-这很有趣-我猜这是最近的发展,很有意义。“你有什么推荐信吗?多看一点就好了?”米克我也这么认为。我认为浏览器甚至会在看不到MOOV时中止流,因为第一个请求(按大小)实际上要求完整的视频。还有一个指向更多细节的指针。。如果您感兴趣,我可以为您提供一个视频,让您的浏览器直接观看。