2016-12-08 54 views
0

我想從加載到我的Video.js對象中的章節文件中獲取提示。我已經找到了如何獲得該曲目,但我需要它的id才能訪問它。從VTT章節中獲取提示跟蹤Video.js

player.textTracks().getTrackById(<trackID>); 

我發現其中id在了Video.js 5.14.0庫中定義:

// video.js/dist/video.js (line 19195) 
var trackProps = { 
    id: options.id || 'vjs_track_' + Guid.newGUID(), 
    kind: options.kind || '', 
    label: options.label || '', 
    language: options.language || '' 
}; 

看來,你可以通過將對象的功能定義自己的id

// video.js/dist/video.js (line 19178) 
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 

我加載章節曲目如下:

<track kind="chapters" src="chapters.vtt" srclang="en" default> 

我讀過你可以動態添加跟蹤文件,但你將不得不重新加載Video.js對象。

回答

1

你可以得到所有的曲目,然後得到一個是chapters類型:

player.on('loadedmetadata', function() { 
    var tracks = player.textTracks(), 
      chapterTrack; 

    for (var i=0; tracks.length > i; i++) { 
     if ('chapters' === tracks[i].kind) { 
      chapterTrack = tracks[i]; 
     } 
    } 

    console.log(chapterTrack.cues); 
}); 

https://github.com/videojs/video.js/blob/master/docs/guides/text-tracks.md#working-with-text-tracks

+0

謝謝您的回答。 'textTracks'對象在使用console.log(vvplayer.textTracks());'時,即使能夠從控制檯的tracks_'屬性中看到我的軌道,也不會返回任何軌道項目。此屬性現在可能是私人的。 –

+1

剛剛通過video.js 5.14.0和5.14.1測試過。這種方法適用於我,但是,當video.js就緒回調被調用時,它看起來像文本軌跡並不總是準備好,所以我不得不將代碼封裝在'loadedmetadata'事件的偵聽器中,這使得它可以可靠地工作至少對我來說。用那個更新了答案。 – Hyddan

+0

非常感謝您的測試和您的質量答覆,我希望我有一個調試工具,提供有關異步調用的信息。 –