diff --git a/lib/info.js b/lib/info.js index 96124a9e..8fcd1758 100644 --- a/lib/info.js +++ b/lib/info.js @@ -260,7 +260,22 @@ const getDashManifest = (url, options) => new Promise((resolve, reject) => { if (node.name === 'REPRESENTATION') { const itag = parseInt(node.attributes.ID); if (!isNaN(itag)) { - formats[itag] = { itag, url }; + formats[itag] = { + itag, url, + bitrate: parseInt(node.attributes.BANDWIDTH), + codecs: node.attributes.CODECS, + }; + if (node.attributes.HEIGHT) { + Object.assign(formats[itag], { + width: parseInt(node.attributes.WIDTH), + height: parseInt(node.attributes.HEIGHT), + fps: parseInt(node.attributes.FRAMERATE), + }); + } else { + Object.assign(formats[itag], { + audioSampleRate: node.attributes.AUDIOSAMPLINGRATE, + }); + } } } }; diff --git a/lib/util.js b/lib/util.js index 1dccd06c..948c3111 100644 --- a/lib/util.js +++ b/lib/util.js @@ -331,6 +331,8 @@ exports.validateURL = string => { */ exports.addFormatMeta = format => { format = Object.assign({}, FORMATS[format.itag], format); + format.qualityLabel = + format.qualityLabel || (format.height ? `${format.height}p${format.fps >= 60 ? format.fps : ''}` : null); format.hasVideo = !!format.qualityLabel; format.hasAudio = !!format.audioBitrate; format.container = format.mimeType ? diff --git a/test/util-test.js b/test/util-test.js index 67fdcc8d..4c3c3ddd 100644 --- a/test/util-test.js +++ b/test/util-test.js @@ -508,6 +508,7 @@ describe('util.addFormatMeta()', () => { assert.deepEqual(format, { itag: -1, url: 'http://video.com/3/4.ts', + qualityLabel: null, container: null, codecs: null, videoCodec: null,