Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Javascript 获取与浏览器类似的视频部件_Javascript_Html5 Video_Fetch - Fatal编程技术网

Javascript 获取与浏览器类似的视频部件

Javascript 获取与浏览器类似的视频部件,javascript,html5-video,fetch,Javascript,Html5 Video,Fetch,如果跳过视频的前50秒,浏览器将创建一个带有范围标头的新请求。 例如“内容范围:字节5000000-60005535/60005536”。因此,它只获取从您跳到的点开始所需的数据,而不获取孔视频。当我使用fetchapi并设置范围头时,我也只下载该范围 问题是,当我将数据转换为blob并为其创建一个可以在视频元素中使用的对象url时,它将无法工作,直到我下载从开始到结束的每个字节。因此,如果我下载20-30MB,我仍然需要前20MB使视频播放器工作。我不明白为什么,因为如果我们跳过,浏览器也会做

如果跳过视频的前50秒,浏览器将创建一个带有范围标头的新请求。 例如“内容范围:字节5000000-60005535/60005536”。因此,它只获取从您跳到的点开始所需的数据,而不获取孔视频。当我使用fetchapi并设置范围头时,我也只下载该范围

问题是,当我将数据转换为blob并为其创建一个可以在视频元素中使用的对象url时,它将无法工作,直到我下载从开始到结束的每个字节。因此,如果我下载20-30MB,我仍然需要前20MB使视频播放器工作。我不明白为什么,因为如果我们跳过,浏览器也会做同样的事情

我看了一篇来自谷歌的文章,它展示了如何预装视频,这有点有用,但它只适用于碎片化的mp4,为什么它是无用的

这就是为什么当我将数据作为可读流,然后将这些缓冲区块转换为blob时,我认为它会起作用,但它不起作用


我们有没有办法获取部分视频,比如从15秒开始到25秒结束。

视频流有不同的格式和协议,包括:

  • 简单MP4 HTTP流,其中视频是单个MP4文件,服务器支持在此视频文件中请求字节范围
  • 专门的流媒体协议,支持自适应比特率并使用分段或分段视频文件——目前最常见的ABR流媒体格式是HLS和MPEG DASH
听起来你好像对上面第一个例子感兴趣

在这种情况下,最好理解MP4视频由不同的部分组成,称为原子或盒子。播放MP4文件所需的关键部件之一是“Movie Atom”。这基本上是报头信息,它提供指向类似MP4的其他部分的指针,包括视频流和音频流

为了允许您获取部分视频,您的客户端需要下载此头文件,然后对其进行解析,以了解您要下载的特定块在文件中的位置


看看这个答案,它显示了一个mp4文件结构的示例,也有助于将其可视化:

您到底愿意做什么?要在不下载更多内容的情况下显示该范围的媒体?看见你可能也对这个感兴趣。是的,我在搜索上面的第一个例子。我要试试,谢谢!