【问题标题】:HTML 5 video tag range headerHTML 5 视频标签范围标头
【发布时间】:2018-01-08 18:44:35
【问题描述】:

我有一个用于加载视频的流式 Web 服务器。我还设置了一个简单的 html 页面,其中包含请求视频内容的视频标签。

初始请求的标头如下:

Range:bytes=0-

在我的服务器上,我将范围的结尾设置为:

Range:bytes=0-100000

这有效,html 播放器请求内容的下一部分,标题为:

Range:bytes=100001-

然后返回其余内容。

如何获取 html 视频标签以请求正确的范围。

【问题讨论】:

  • 您的视频文件开头是否有 MOOV 原子(元数据)来告诉 <video> 元素内容有多长?请参阅stackoverflow.com/questions/40836206/… 了解 ffmpeg 命令,该命令将其重写为“faststart”
  • 不应该不会,我去调查一下,谢谢
  • 我使用 ffmpeg 将元数据移动到文件的开头,这样就可以对整个视频进行擦除。
  • 那么,一切都好吗?如果是这样,如果可以的话,我会让我的评论成为答案

标签: html video


【解决方案1】:

您没有让浏览器请求“正确”的范围。浏览器请求它需要的范围。服务器必须正确响应它发出的范围请求。

【讨论】:

  • 是的,这就是我现在的看法。但是,查看 youtube 请求时,他们请求了许多小得多的包,所以我认为这是他们的自定义功能,尽管我认为我没有这样做的用例。
  • 如果您使用媒体源扩展,您可以按照自己喜欢的方式对视频进行分段。
【解决方案2】:

为了提供video 元素所需的信息,您需要帧的元数据位于文件的开头。它包含在 MOOV atom 中,可以在 MP4 视频的开头重新定位(因此在最初打开文件时会读取它),使用类似 ffmpeg 的东西。这将允许video 元素正确请求起点和终点,而不仅仅是开始并希望结束...

./ffmpeg -y -i SourceFile.mp4 -c:a copy -c:v copy -movflags faststart DestFile.mp4

这将简单地重新定位 MOOV atom 而无需任何额外的转码(-c:a copy-c:v copy 只需复制音频和视频而无需更改)

【讨论】:

  • 这是我能想到的最佳解决方案,似乎可以启用我想要的所有功能,但实际上并没有改变请求的字节范围
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 2013-10-15
  • 2013-03-27
  • 1970-01-01
  • 2016-06-16
相关资源
最近更新 更多