diff --git a/src/toM3u8.js b/src/toM3u8.js index 1286fe5e..968e1056 100644 --- a/src/toM3u8.js +++ b/src/toM3u8.js @@ -15,6 +15,14 @@ export const formatAudioPlaylist = ({ attributes, segments }) => { }; export const formatVttPlaylist = ({ attributes, segments }) => { + if (segments === undefined) { + segments = [{ + uri: attributes.url, + timeline: attributes.periodIndex, + resolvedUri: attributes.url || '', + duration: attributes.sourceDuration + }]; + } return { attributes: { NAME: attributes.id, @@ -86,6 +94,7 @@ export const formatVideoPlaylist = ({ attributes, segments }) => { attributes: { NAME: attributes.id, AUDIO: 'audio', + SUBTITLES: 'subs', RESOLUTION: { width: parseInt(attributes.width, 10), height: parseInt(attributes.height, 10) @@ -141,8 +150,7 @@ export const toM3u8 = dashPlaylists => { master.mediaGroups.AUDIO.audio = organizeAudioPlaylists(audioPlaylists); } - // TODO: vtt playlists not yet supported - if (vttPlaylists.length && false) { + if (vttPlaylists.length) { master.mediaGroups.SUBTITLES.subs = organizeVttPlaylists(vttPlaylists); } diff --git a/test/manifests/maat_vtt_segmentTemplate.js b/test/manifests/maat_vtt_segmentTemplate.js index 70660086..40f9ecfb 100644 --- a/test/manifests/maat_vtt_segmentTemplate.js +++ b/test/manifests/maat_vtt_segmentTemplate.js @@ -101,9 +101,6 @@ export const parsedManifest = { } }, ['CLOSED-CAPTIONS']: {}, - // Subtitles feature is turned off - SUBTITLES: {}, - /* SUBTITLES: { subs: { en: { @@ -118,7 +115,12 @@ export const parsedManifest = { }, endList: true, resolvedUri: 'https://example.com/en.vtt', - segments: undefined, + segments: [{ + duration: 6, + resolvedUri: 'https://example.com/en.vtt', + timeline: 0, + uri: 'https://example.com/en.vtt' + }], timeline: 0, uri: '' }], @@ -136,7 +138,12 @@ export const parsedManifest = { }, endList: true, resolvedUri: 'https://example.com/es.vtt', - segments: undefined, + segments: [{ + duration: 6, + resolvedUri: 'https://example.com/es.vtt', + timeline: 0, + uri: 'https://example.com/es.vtt' + }], timeline: 0, uri: '' }], @@ -144,12 +151,12 @@ export const parsedManifest = { } } }, - */ VIDEO: {} }, playlists: [{ attributes: { AUDIO: 'audio', + SUBTITLES: 'subs', BANDWIDTH: 449000, CODECS: 'avc1.420015', NAME: '482', @@ -194,6 +201,7 @@ export const parsedManifest = { }, { attributes: { AUDIO: 'audio', + SUBTITLES: 'subs', BANDWIDTH: 3971000, CODECS: 'avc1.64001e', NAME: '720', diff --git a/test/toM3u8.test.js b/test/toM3u8.test.js index 86d34884..c93dd260 100644 --- a/test/toM3u8.test.js +++ b/test/toM3u8.test.js @@ -88,9 +88,6 @@ QUnit.test('playlists', function(assert) { } }, ['CLOSED-CAPTIONS']: {}, - // Subtitles feature is turned off - SUBTITLES: {}, - /* SUBTITLES: { subs: { text: { @@ -113,12 +110,12 @@ QUnit.test('playlists', function(assert) { } } }, - */ VIDEO: {} }, playlists: [{ attributes: { AUDIO: 'audio', + SUBTITLES: 'subs', BANDWIDTH: 10000, CODECS: 'foo;bar', NAME: '1',