jQueryを使用してビデオソースをどのように変更しますか?


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()について読みましたが、使い方がわかりません。

回答:


147

$("#divVideo video")[0].load();src属性を変更してから試してください。


おかげで、私はなしで試していました[0]。しかし[0]、セレクターがビデオタグを1つだけ選択していたとしても、追加する必要があることがわかりました。
Vaibhav Vishal 2018年

1
@VaibhavVishal Jqueryには独自のロード関数があるためと思われます(バージョン3より前の2つ)。
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タグを使用してみましたが、.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();

ロードがサポートされていないというJavaScriptエラーが発生します。IE 11.
Newclique 2014

1
私はあなたのエラーウェイドに関していくつかの追加情報を追加しました。
vipero07 2014

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」コマンドを発行することでした。不思議なことに、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

これはFlowplayer6.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>

それが誰かに役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.