【问题标题】:HTML5 video doesn't play until source updateHTML5 视频在源更新之前无法播放
【发布时间】:2017-05-24 19:17:31
【问题描述】:

我有一个 HTML5 播放器,它是我的移动 (cordova) 应用程序的一部分:

<video width="100%" height="100%" id="video-1" src="/mnt/sdcard/xyz-media/xyz.mp4?param=8zw6y" preload="none">
  <source src="/mnt/sdcard/xyz-media/xyz.mp4?param=8zw6y" type="video/mp4">
</video>

?param= 是由于加载多个视频导致的已知 Chrome 错误而添加的。

所以我的代码中还有canplaythrough 事件:

var videoWrapper = document.getElementById('video-1');

videoWrapper.addEventListener('canplaythrough', function(){
  videoWrapper.play();
});

但视频从不播放。当我尝试手动执行它时它也不起作用,但是当我手动重新加载 src 属性然后尝试播放时 - 它起作用了:

var src = document.getElementById('video-1').getAttribude('src');
document.getElementById('video-1').setAttribute('src', src);
document.getElementById('video-1').play();

为什么不刷新就无法播放视频?请帮忙。

【问题讨论】:

  • 在你的代码中你给src两次,在javascript中使用的id是video-1,而在html中是video-2
  • @ricky 那个不同的 id 属性是我在写这个问题时的错误 - 抱歉,我现在已经修复了它。谢谢

标签: javascript html cordova video-streaming html5-video


【解决方案1】:

我怀疑问题出在preload 属性上。您已将其配置为none,因此浏览器在页面加载时不会加载视频。使用auto 应该可以。

<video width="100%" height="100%" id="video-1" preload="auto">
  <source src="/mnt/sdcard/xyz-media/xyz.mp4?param=8zw6y" type="video/mp4">
</video>

【讨论】:

    【解决方案2】:

    我认为您在视频标签的错误位置使用了src,在该位置您可以使用控件。

    查看此链接: http://www.w3schools.com/tags/tag_video.asp.

    从此链接获取更多视频设置: https://developer.mozilla.org/en/docs/Web/HTML/Element/video

    希望对你有帮助。

    还要确保您为视频标签编写了正确的#id

    var videoWrapper = document.getElementById('video-1'); 
    

    var videoWrapper = document.getElementById('video-2');// Correct One
    

    谢谢

    【讨论】:

    • 我已经修复了问题中的 div id - 这是我写问题时的错误,在我的生产代码中,id 是正确的 - 抱歉:)
    • 更改src 后使用问题仍然存在。我的手动解决方案仍然有效。
    • 您好先生,请确认您的视频类型和来源类型=“video/mp4”应该相同。如果您要添加任何 youtube 视频,那么您必须获得 mp4 视频链接。 谢谢
    • 我确定 - 它是本地存储的 mp4 视频。
    • 先生您好,请使用视频演示脚本
    猜你喜欢
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 2012-01-25
    • 2011-10-10
    相关资源
    最近更新 更多