60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
/**
|
|
* @file create-text-tracks-if-necessary.js
|
|
*/
|
|
|
|
/**
|
|
* Create text tracks on video.js if they exist on a segment.
|
|
*
|
|
* @param {Object} sourceBuffer the VSB or FSB
|
|
* @param {Object} mediaSource the HTML or Flash media source
|
|
* @param {Object} segment the segment that may contain the text track
|
|
* @private
|
|
*/
|
|
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', {
|
|
value: true
|
|
});
|
|
var createTextTracksIfNecessary = function createTextTracksIfNecessary(sourceBuffer, mediaSource, segment) {
|
|
var player = mediaSource.player_;
|
|
|
|
// create an in-band caption track if one is present in the segment
|
|
if (segment.captions && segment.captions.length) {
|
|
if (!sourceBuffer.inbandTextTracks_) {
|
|
sourceBuffer.inbandTextTracks_ = {};
|
|
}
|
|
|
|
for (var trackId in segment.captionStreams) {
|
|
if (!sourceBuffer.inbandTextTracks_[trackId]) {
|
|
player.tech_.trigger({ type: 'usage', name: 'hls-608' });
|
|
var track = player.textTracks().getTrackById(trackId);
|
|
|
|
if (track) {
|
|
// Resuse an existing track with a CC# id because this was
|
|
// very likely created by videojs-contrib-hls from information
|
|
// in the m3u8 for us to use
|
|
sourceBuffer.inbandTextTracks_[trackId] = track;
|
|
} else {
|
|
// Otherwise, create a track with the default `CC#` label and
|
|
// without a language
|
|
sourceBuffer.inbandTextTracks_[trackId] = player.addRemoteTextTrack({
|
|
kind: 'captions',
|
|
id: trackId,
|
|
label: trackId
|
|
}, false).track;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (segment.metadata && segment.metadata.length && !sourceBuffer.metadataTrack_) {
|
|
sourceBuffer.metadataTrack_ = player.addRemoteTextTrack({
|
|
kind: 'metadata',
|
|
label: 'Timed Metadata'
|
|
}, false).track;
|
|
sourceBuffer.metadataTrack_.inBandMetadataTrackDispatchType = segment.metadata.dispatchType;
|
|
}
|
|
};
|
|
|
|
exports['default'] = createTextTracksIfNecessary;
|
|
module.exports = exports['default']; |