【问题标题】:HTML embedded video won't play unless "disable cache" is enabled in DevTools除非在 DevTools 中启用“禁用缓存”,否则 HTML 嵌入视频不会播放
【发布时间】:2021-08-20 00:44:19
【问题描述】:

我正在创建一个网站named bobPlayer,由于某种原因,它不会加载通过 HTTPS 传输的 MP4 文件。它只是显示以下内容:Link to screenshot of player.

尝试按播放按钮,否则按空格键将无法播放视频。

视频效果很好when caching is disabled via DevTools in chrome.

在我的实际 HTML 代码的标题部分中,我包含以下元标记,但 Chrome 仍然拒绝播放视频:

<meta http-equiv="Cache-Control" content="private, no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

iOS 上的 Safari/Chrome 不会出现此问题,但我和其他 2 位朋友在 PC 上遇到了此问题。 (特别是 Chrome,它似乎在 Firefox 中运行良好。)

托管这些视频的服务器运行 Ruby,并通过 HTTPS 进行身份验证,因为该网站不允许 HTTP 和 HTTPS 的混合内容。

服务器托管这些视频的 MP4 文件。这不应该是我的问题的原因,因为所有现代网络浏览器都支持 MP4。服务器正在使用以下命令在命令行中运行 Ruby:

ruby -run -e httpd . --ssl-certificate=/home/pi/.ssl/certificate.crt --ssl-private-key=/home/pi/.ssl/private.key -p 8010

网页通过将 URL 标签 ?episode=123 与 JSON 文件中托管的 URL 相匹配的脚本来决定播放哪个视频。尝试播放的视频在 1-405 的限制范围内。如果尝试通过非动态分配的标签播放视频也会出现此问题,其中源文件被编码到 HTML 文件中,而不是替换为 JS 代码。

所有代码都在GitHub 上提供,但视频不在那里托管,而是在a Ruby httpd server 上托管,如前所述。

任何帮助将不胜感激。

【问题讨论】:

  • MP4 的状态码是 206 Partial Content。我正在使用最新版本。
  • 鉴于该问题可以在没有 JS 或 Ruby 的情况下重现,我建议删除这些标签,并显示最小相关的 HTML。

标签: javascript html ruby https html5-video


【解决方案1】:

我敢打赌这是视频格式问题。 iOS 在所有浏览器中都支持 h265 编码,而 Windows 上的 Chrome 不支持。视频文件的编码是什么?您可以使用https://ffprobe.a.video 进行测试(并添加视频的网址)。

【讨论】:

  • 网站说格式是h264。在chrome中粘贴链接时,它只是下载文件,而不是播放文件。我认为是其他一些元数据导致视频无法正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
相关资源
最近更新 更多