【问题标题】:HTML5 video not working on mobile phoneHTML5 视频无法在手机上播放
【发布时间】:2026-01-30 10:20:03
【问题描述】:

我正在尝试在我的网络上制作 HTML5 视频。在桌面上它工作得很好,但在我的手机上却不一样。相反,它似乎是典型的类似视频的图像,表明它应该是一个视频,但没有加载。我使用EasyHTML5Video 将我的视频转换为几种不同的格式,根据这个软件,它应该兼容很多平台...风格。

我的手机使用的是 Android 4.0。

HTML

<video id="video-background" preload="auto" autoplay="autoplay" poster="./images/starry_sky.jpg" loop="loop">
    <source src="./videos/time_lapse.m4v" type="video/mp4" />
    <source src="./videos/time_lapse.webm" type="video/webm" />
    <source src="./videos/time_lapse.ogv" type="video/ogg" />
    <source src="./videos/time_lapse.mp4" />
    <object type="application/x-shockwave-flash" data="./videos/flashfox.swf">
        <param name="movie" value="./videos/flashfox.swf" />
        <param name="allowFullScreen" value="false" />
        <param name="flashVars" value="autoplay=true&controls=false&fullScreenEnabled=false&posterOnEnd=false&loop=true&poster=./images/starry_sky.jpg&src=time_lapse.m4v" />
        <embed src="./videos/flashfox.swf" flashVars="autoplay=true&controls=false&fullScreenEnabled=false&posterOnEnd=false&loop=true&poster=./images/starry_sky.jpg&src=./videos/time_lapse.m4v"  allowFullScreen="false" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_en" />
        <img alt="time_lapse" src="./images/starry_sky.jpg"/>
    </object>
</video>

编辑

我尝试使用默认浏览器打开它。当我尝试使用 Google Chrome 时,对象标签内的图像已加载,但视频仍未加载。

【问题讨论】:

  • 您在哪些浏览器中打开了您的视频?您是否尝试在其他移动浏览器中打开?
  • @phts 我已编辑问题以提供您所要求的信息。
  • 据我所知,没有理由同时包含 .m4v.mp4 文件。另外,您是否尝试过完全省略 Flash 部分?
  • @herrbischoff 我做到了。一开始我只尝试了 webm 和 mp4 格式。然后我根据这个 EasyHTML5Video 生成的代码添加了 ogg、m4v 和 flash。
  • @Fernando:我刚刚添加了一个可能解决这个问题的答案。

标签: html video


【解决方案1】:

根据this(相当老的)帖子,您可能需要添加以下 JavaScript 代码才能在 Android 上播放:

function myOnload() {
  var ua = navigator.userAgent;
  if (typeof ua != “undefined” && ua.match(/Android.* 2\.[0 – 2](\.[0 – 9]+)*[^.0 – 9]/i) !== null) {
    var vid = document.getElementById(“video”);
    vid.addEventListener(“click”, function() {
      vid.play();
    }, false);
  }
}
window.onload = myOnload;

另外,根据this SO question,你可能需要这样写video标签:

<video class="video" poster="/assets/video/posters/example.jpg" controls width="768" height="432" preload="none">
  <source src="/assets/video/example.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' />
  <source src="/assets/video/example.ogv" type='video/ogg; codecs="theora, vorbis"' />
</video>

【讨论】:

  • 感谢尝试但没有解决...唯一改变的是我没有启用控件,因为我正在寻找自动播放,并且宽度和高度与我正在使用的那些:\
最近更新 更多