0

我需要閱讀並修改視頻元素中的一些標籤和屬性,該元素使用video.js作爲播放器。我已經能夠使用getElementsByTagName和getAttribute讀取信息,如下面的代碼所示。但我希望通過video.js(5.6.0)有更簡單/更好/最好的方式來做到這一點。什麼是正確的方式來閱讀video.js中的視頻元素/屬性?

var video = document.getElementsByTagName('video')[0]; 
var poster = video.getAttribute('poster'); 
var sources = video.getElementsByTagName('source'); 
var tracks = video.getElementsByTagName('track'); 

if (poster != null) 
{ 
    var newposter = addChk(poster, "p"); // generates modified source 
    video.setAttribute('poster', newposter); 
} 

for (var i = 0; i < sources.length; i++) { 
    var s = sources[i].getAttribute('src'); 
    s = addChk(s,"f");     // generates modified source 
    sources[i].setAttribute('src', s); 
} 

for (var i = 0; i < tracks.length; i++) 
{ 
    var s = tracks[i].getAttribute('src'); 
    s = addChk(s, "c");     // generates modified source 
    tracks[i].setAttribute('src', s); 
} 

謝謝。

回答

1

正如你使用video.js你應該使用它的API。在創建播放器後直接修改視頻元素並不總是按預期工作,如果您使用的是不同的播放技術(如IE8上的Flash),則甚至不會有視頻元素。

var player = videojs('my_player_id'); 

// Get/set poster: 
console.log(player.poster()); 
player.poster('//example.com/poster.jpg'); 

// Get source: 
console.log(player.currentSrc()); 

// Update source: 
player.src({src: '//example.com/video.mp4', type: 'video/mp4'}); 

// Multiple sources: 
player.src([ 
    {src: '//example.com/video.m3u8', type: 'application/x-mpegURL'}, 
    {src: '//example.com/video.mp4', type: 'video/mp4'} 
]); 

要更新曲目,你需要添加for now之前刪除現有的音軌。

// Remove tracks: 
var tracks = player.textTracks(); 
for (i = 0; i<tracks.length;i++) { 
    player.removeRemoteTextTrack(tracks[i]); 
} 
// Add a track 
player.addRemoteTextTrack({ 
    kind: 'captions', 
    src: '//example.com/captions.vtt', 
    srclang: 'is', 
    label: 'íslenska' 
}); 
+0

感謝有關video.js方法的詳細信息。我限制我的使用只有mp4和webm,而不是處理IE8。鑑於這些假設,如果我在執行getElementsByTagName/getAttribute操作之後才創建video.js播放器(即,在手動設置video.js播放器之前執行代碼,而不依賴數據設置屬性) ,getElementsByTagName/getAttribute是否安全? (只是試圖確保我明白什麼會和不會工作。) – kgcode

+0

我不會推薦它。一旦玩家初始化,使用video.js API與視頻元素進行交互。 – misterben

+0

謝謝。我假設你是指軌道,而不是在刪除文本軌道的循環中? – kgcode

相關問題