我可以使用 javascript 动态更改视频的来源吗?

IT技术 javascript jquery video html
2021-01-25 03:02:06

如何使用 JS 更改视频的来源?

<video id="myVideoTag" width="670" height="377" autoplay="true" controls="controls">
    <source src="http://www.test.com/test.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>
</video>
6个回答

当然,

  1. 您可以srcsource元素设置属性

    document.querySelector("#myVideoTag > source").src = "http://example.com/new_url.mp4"
    

    或者使用 jQuery 而不是标准的 DOM 方法:

    $("#myVideoTag > source").attr("src", "http://example.com/new_url.mp4"​​​​)​
    
  2. 然后你需要调用load视频元素上的方法:

    videoElement.load()

为我工作,请记住要求videoElement.load()更改生效。
2021-03-17 03:02:06
">源" 给出 javascript 错误,如何删除它
2021-03-21 03:02:06
我投了赞成票,但这个答案实际上是错误的。无法更改source标签:您需要更改标签中src属性video这是迄今为止我发现的最佳解决方案:stackoverflow.com/a/5371478/950704
2021-04-09 03:02:06
更改源标记的 src 属性没有任何作用。直接设置在视频标签上。
2021-04-13 03:02:06

我已经多次遇到这个问题,根据以前的经验和挖掘,我可以建议以下选项:

  • 完全替换视频标签

是的,只需<video>使用新来源重新插入元素。这是简单但有效的方法。不要忘记重新初始化事件侦听器。


  • 将视频 URL 分配给 video.src

我在这里的答案、stackoverflow 以及 github 上的源代码中看到了很多。

var video = document.getElementById('#myVideo');
video.src = newSourceURL;

它有效,但您无法提供可供选择的浏览器选项。


  • 调用 .load() 视频元素

根据文档,您可以更新's标签的src属性,然后调用更改生效:<video><source>.load()

<video id="myVideo">
    <source src="video.mp4" type="video/mp4" />
    <source src="video.ogg" type="video/ogg" />
</video>

<script>
    var video = document.getElementById('myVideo');
    var sources = video.getElementsByTagName('source');
    sources[0].src = anotherMp4URL;
    sources[1].src = anotherOggURL;
    video.load();
</script>

不过这里据说某些浏览器存在问题。

我希望将这一切集中在一个地方会有用。

我遇到了同样的问题。根据这个线程:

更改 html5 视频标签上的源

无法更改源标记的 src。您将不得不使用视频标签本身的 src。

这是工作

<video id="videoplayer1" width="240" height="160" controls>
    <source id="video_res_1" src="" type="video/ogg">
</video>

并在 javascript 中

document.getElementById("video_res_1").src = "my video url.ogv";
document.getElementById("videoplayer1").load();

关键是重新加载视频播放器的 .load() 函数。

谢谢!使用 js 更改源标记的 src 后,使用 load() 方法对我有用。play() 不起作用。
2021-03-29 03:02:06

尽管 Campbell 提供了正确的解决方案,但此处提供了针对手头“特定播放列表”问题的更完整解决方案(如评论中所述)如果正确实施,此解决方案可以应用于所有视频格式(我使用了Modernizr来检测给定浏览器将播放哪个源,并结合上述解决方案)。

该解决方案将适用于(并且已经过测试)在所有 HTML5 浏览器(包括 IE8)中更改 HTML5 视频标签中的视频。

为什么投反对票?我的答案中提供的解决方案链接是准确的,没有理由从另一篇文章中重新发布整个解决方案……如果您要投票,请解释一下。
2021-03-19 03:02:06