Как изменить источник видео с помощью jQuery?

85

Как изменить src тега видео HTML5 с помощью jQuery?

Я получил этот 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);

Он изменяет src, если я проверяю его с помощью firebug, но на самом деле не меняет воспроизводимое видео.

Я читал о .pause () и .load (), но не знаю, как их использовать.

Аксимили
источник

Ответы:

149

Попробуйте $("#divVideo video")[0].load();после того, как вы изменили атрибут src.

Шиме Видас
источник
Спасибо, пробовал без [0]. Но оказалось, что его нужно добавить, [0]хотя мой селектор выбирал ровно один тег видео.
Вайбхав Вишал
1
@VaibhavVishal Скорее всего, потому что у JQuery есть собственная функция загрузки (до версии 3 их две).
DylanYoung 07
Работал для меня, где я меняю src с AJAX.
PriyankMotivaras
20

Я бы предпочел сделать это так

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

</video>

а затем используйте

$("#v1").html('<source src="test1.mp4" type="video/mp4"></source>' );
smaj08r
источник
16

Я пробовал использовать тег autoplay, и .load () .play () по-прежнему нужно вызывать хотя бы в chrome (возможно, это мои настройки).

самый простой кросс-браузерный способ сделать это с помощью 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/en-us/library/ie/hh924823(v=vs.85).aspx#ManagingPlaybackInJavascript

Дополнительная информация: .load () работает, только если внутри видеоэлемента есть элемент источника html (т.е. <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();
vipero07
источник
Я получаю сообщение об ошибке JavaScript, в котором говорится, что загрузка не поддерживается. IE 11.
Newclique
1
Я добавил некоторую дополнительную информацию относительно вашей ошибки, Уэйд.
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

Для меня сработало выполнение команды «play» после изменения источника. Как ни странно, вы не можете использовать play () через экземпляр jQuery, поэтому вы просто используете 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.
Sheelpriy
источник
0

Самый простой способ - использовать автовоспроизведение.

<video autoplay></video>

Когда вы меняете src через javascript, вам не нужно упоминать load ().

Хасанави
источник
Это имеет побочные эффекты. Вы должны их упомянуть.
DylanYoung 07
-2

Это работает на Flowplayer 6.0.2 .

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

где переменная - это значение переменной javascript / jquery, тег видео должен быть таким

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

Надеюсь, это кому-нибудь поможет.

PJunior
источник