如何使用jQuery更改视频src?


83

如何使用jQuery更改HTML5视频标签的src?

我得到了这个HTML:

<div id="divVideo">
  <video controls>
    <source src="test1.mp4" type="video/mp4" />
  </video>
</div>

这不起作用:

var videoFile = 'test2.mp4';
$('#divVideo video source').attr('src', videoFile);

如果我使用Firebug进行检查,它会更改src,但实际上不会更改正在播放的视频。

我读到有关.pause()和.load()的信息,但是我不确定如何使用它们。

Answers:


147

$("#divVideo video")[0].load();更改src属性后,请尝试。


谢谢,我正在尝试[0]。但是事实证明,[0]即使我的选择器恰好选择了一个视频标签,它也需要添加。
Vaibhav Vishal

1
@VaibhavVishal可能是因为Jquery具有自己的加载功能(在版本3之前,其中两个)。
DylanYoung,

为我工作,我要从AJAX更改src。
PriyankMotivaras

19

我宁愿这样

<video  id="v1" width="320" height="240" controls="controls">

</video>

然后使用

$("#v1").html('<source src="test1.mp4" type="video/mp4"></source>' );

15

我试过使用autoplay标记,并且仍然需要至少在chrome中调用.load().play()(可能是我的设置)。

使用您的示例使用jquery执行此操作的最简单的跨浏览器方法是

var $video = $('#divVideo video'),
videoSrc = $('source', $video).attr('src', videoFile);
$video[0].load();
$video[0].play();

但是我建议您这样做的方式(为了清晰易读)是

var video = $('#divVideo video')[0];
video.src = videoFile;
video.load();
video.play();

进一步阅读 http://msdn.microsoft.com/zh-cn/library/ie/hh924823(v=vs.85).aspx#ManagingPlaybackInJavascript

附加信息:.load()仅在video元素内有html source元素(即<source src="demo.mp4" type="video/mp4" />)时才有效

非jquery的方式将是:

的HTML

<div id="divVideo">
  <video id="videoID" controls>
    <source src="test1.mp4" type="video/mp4" />
  </video>
</div>

JS

var video = document.getElementById('videoID');
video.src = videoFile;
video.load();
video.play();

我收到一个JavaScript错误,说不支持加载。IE 11.
Newclique 2014年

1
我添加了一些有关您的错误Wade的附加信息。
vipero07年

2

JQUERY

<script type="text/javascript">
$(document).ready(function() {
  var videoID = 'videoclip';
  var sourceID = 'mp4video';
  var newmp4 = 'media/video2.mp4';
  var newposter = 'media/video-poster2.jpg';
 
  $('#videolink1').click(function(event) {
    $('#'+videoID).get(0).pause();
    $('#'+sourceID).attr('src', newmp4);
    $('#'+videoID).get(0).load();
     //$('#'+videoID).attr('poster', newposter); //Change video poster
    $('#'+videoID).get(0).play();
  });
});


1

对我有用的是在更改源之后发出“播放”命令。奇怪的是,您无法通过jQuery实例使用“ play()”,因此只能按以下方式使用getElementByID:

的HTML

<video id="videoplayer" width="480" height="360"></video>

JAVASCRIPT

$("#videoplayer").html('<source src="'+strSRC+'" type="'+strTYPE+'"></source>' );
document.getElementById("videoplayer").play();

1
     $(document).ready(function () {     
    setTimeout(function () {
                    $(".imgthumbnew").click(function () {
                        $("#divVideo video").attr({
                            "src": $(this).data("item"),
                            "autoplay": "autoplay",        
                        })
                    })
                }, 2000); 
            }
        });

here ".imgthumbnew" is the class of images which are thumbs of videos, an extra attribute is given to them which have video url. u can change according to your convenient.
i would suggest you to give an ID to ur Video tag it would be easy to handle.

0

最简单的方法是使用自动播放。

<video autoplay></video>

通过javascript更改src时,无需提及load()。


这有副作用。你应该提到他们。
DylanYoung,

-2

这适用于Flowplayer 6.0.2

<script>
    flowplayer().load({
         sources: [
            { type: "video/mp4",  src: variable }
            ]
        });
</script>

其中variable是javascript / jquery变量值,视频标记应为

<div class="flowplayer">
   <video>
      <source type="video/mp4" src="" class="videomp4">
   </video>
</div>

希望它能帮助任何人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.