HTML5 视频无法仅在 Chrome 中播放

新手上路,请多包涵

一些背景

我已经在 FF 和 Safari(包括 iDevices)中测试了我的视频,它可以正常播放,但无法在 Chrome 浏览器中播放。正如您在下面的代码中看到的那样,我已经创建了 mp4、m4v、webM 和 ogv 文件,并且我已经在我的计算机上测试了所有这些文件是否存在播放问题。

症状/问题

在 Chrome 中,视频似乎已加载,并且 控制台日志中没有错误。当按下播放按钮时,它会加载文件的一部分,但随后不会播放。然而,有趣的是,如果我在时间栏中任意单击稍后的时间,比如说大约中途,即使有字幕,它也会播放大约 5 秒的视频,但 没有 音频。

我的研究

我已经阅读了可能导致此问题的任何问题,但我没有找到任何可行的想法。需要注意的是,我在 .htaccess 文件中编写了以下内容:

 # ----------------------------------------------------------------------
# Proper MIME type for all files
# ----------------------------------------------------------------------

# Audio
AddType audio/ogg                      oga ogg
AddType audio/mp4                      m4a
AddType audio/webm                     webm

# Video
AddType video/ogg                      ogv
AddType video/mp4                      mp4 m4v
AddType video/webm                     webm

# Assorted types
AddType image/x-icon                        ico
AddType image/webp                          webp
AddType text/cache-manifest                 appcache manifest
AddType text/x-component                    htc
AddType application/x-chrome-extension      crx
AddType application/x-opera-extension       oex
AddType application/x-xpinstall             xpi
AddType application/octet-stream            safariextz
AddType application/x-web-app-manifest+json webapp
AddType text/x-vcard                        vcf
AddType text/plain                          srt

另外,我正在使用 mediaelement.js 库。

编码

这是HTML:

 <video width="100%" height="400" poster="assets/img/myVideo.jpg" controls="controls" preload="none">
      <!-- M4V for Apple -->
      <source type="video/mp4" src="assets/vid/PhysicsEtoys.m4v" />
      <!-- MP4 for Safari, IE9, iPhone, iPad, Android, and Windows Phone 7 -->
      <source type="video/mp4" src="assets/vid/PhysicsEtoys.mp4" />
      <!-- WebM/VP8 for Firefox4, Opera, and Chrome -->
      <source type="video/webm" src="assets/vid/PhysicsEtoys.webm" />
      <!-- Ogg/Vorbis for older Firefox and Opera versions -->
      <source type="video/ogg" src="assets/vid/PhysicsEtoys.ogv" />
      <!-- Subtitles -->
      <track kind="subtitles" src="assets/vid/subtitles.srt" srclang="en" />
      <track kind="subtitles" src="assets/vid/subtitles.vtt" srclang="en" />
      <!-- Flash fallback for non-HTML5 browsers without JavaScript -->
      <object width="100%" height="400" type="application/x-shockwave-flash" data="flashmediaelement.swf">
          <param name="movie" value="flashmediaelement.swf" />
          <param name="flashvars" value="controls=true&file=assets/vid/PhysicsEtoys.mp4" />
          <!-- Image as a last resort -->
          <img src="assets/img/myVideo.jpg" width="320" height="240" title="No video playback capabilities" />
      </object>
</video>

这是简单的js:

 $('video,audio').mediaelementplayer({
    features: ['playpause','progress','current','tracks','volume'],
    startLanguage: 'en'
});

有任何想法吗?

感谢您在这件事上的任何帮助!

原文由 Chris Lindgren 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 892
2 个回答

在其他人的帮助下,我们发现这是在 HTML 文件中对源文件进行排序的问题。我了解到浏览器接受第一种可用格式,并且它们似乎是 .m4v 文件的问题,所以我从 .mp4 开始,然后是 .webm。以下是在 Safari(甚至在我的 iPhone 5 上)、Firefox 和 Chrome 中有效的顺序:

 <video width="100%" height="400" poster="assets/img/myVideo.jpg" controls="controls" preload="none">
      <!-- MP4 for Safari, IE9, iPhone, iPad, Android, and Windows Phone 7 -->
      <source type="video/mp4" src="assets/vid/PhysicsEtoys.mp4" />
      <!-- WebM/VP8 for Firefox4, Opera, and Chrome -->
      <source type="video/webm" src="assets/vid/PhysicsEtoys.webm" />
       <!-- M4V for Apple -->
      <source type="video/mp4" src="assets/vid/PhysicsEtoys.m4v" />
      <!-- Ogg/Vorbis for older Firefox and Opera versions -->
      <source type="video/ogg" src="assets/vid/PhysicsEtoys.ogv" />
      <!-- Subtitles -->
      <track kind="subtitles" src="assets/vid/subtitles.srt" srclang="en" />
      <track kind="subtitles" src="assets/vid/subtitles.vtt" srclang="en" />
      <!-- Flash fallback for non-HTML5 browsers without JavaScript -->
      <object width="100%" height="400" type="application/x-shockwave-flash" data="flashmediaelement.swf">
          <param name="movie" value="flashmediaelement.swf" />
          <param name="flashvars" value="controls=true&file=assets/vid/PhysicsEtoys.mp4" />
          <!-- Image as a last resort -->
          <img src="assets/img/myVideo.jpg" width="320" height="240" title="No video playback capabilities" />
      </object>
  </video>

现在,我将不得不重新检查 m4v 文件的编码(可能是 Baseline vs Main、High 等问题)。

原文由 Chris Lindgren 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有一个类似的问题——没有视频可以在谷歌浏览器上播放,但它在 Safari 中运行良好。

我终于让它分两步工作:

  1. 使用 VLC 将每个视频转换为 .m4v 类型(而不是 .mp4)
  2. 使用此代码添加每个视频,确保将其预加载和静音设置为 true。
 <video src="assets/VIDEOTITLE.m4v" type="video/m4v" height="400" autoplay loop class="d-block w-100" preload ="auto" muted="true"></video>

它现在似乎终于起作用了。

原文由 Rosalie W 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题