var displayDates = false; function getBasicTrackHeader() { var html = ''; html += 'ID'; html += 'References'; html += 'Alternate Group'; if (displayDates) { html += 'Creation Date'; html += 'Modified Date'; } html += 'Presentation Duration'; html += 'Presentation Edits'; html += 'Duration'; html += 'Timescale'; html += 'Timelines Shift'; html += 'Number of Samples'; html += 'Bitrate (kbps)'; html += 'Codec'; html += 'Language'; html += 'Kind'; html += 'Width'; html += 'Height'; html += 'Layer'; return html; } function getBasicTrackInfo(track) { var i; var html = ''; html += '' + track.id + ''; html += ''; if (track.references && track.references.length > 0) { html += ''; html += ''; html += ''; html += ''; html += ''; for (i = 0; i < track.references.length; i++) { html += ''; } html += ''; html += '
TypeTracks
' + track.references[i].type + '' + track.references[i].track_ids + '
'; } html += ''; html += '' + track.alternate_group + ''; if (displayDates) { html += '' + track.created + ''; html += '' + track.modified + ''; } html += '' + track.movie_duration + ' - ' + Log.getDurationString(track.movie_duration, track.movie_timescale) + ''; html += ''; if (track.edits && track.edits.length > 0) { html += ''; html += ''; html += ''; html += ''; html += ''; for (i = 0; i < track.edits.length; i++) { html += ''; html += ''; if (track.edits[i].media_time !== -1) { html += ''; } else { html += ''; } html += ''; html += ''; } html += ''; html += '
Presentation DurationTrack TimeSpeed
' + track.edits[i].segment_duration + ' - ' + Log.getDurationString(track.edits[i].segment_duration, track.movie_timescale) + '' + track.edits[i].media_time + ' - ' + Log.getDurationString(track.edits[i].media_time, track.timescale) + '' + track.edits[i].media_rate_integer + '
'; } html += ''; html += '' + track.duration + ' - ' + Log.getDurationString(track.duration, track.timescale) + ''; html += '' + track.timescale + ''; html += ''; if (track.cts_shift) { html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += '
shift' + track.cts_shift.compositionToDTSShift + ' - ' + Log.getDurationString(track.cts_shift.compositionToDTSShift, track.timescale) + '
min' + track.cts_shift.leastDecodeToDisplayDelta + ' - ' + Log.getDurationString(track.cts_shift.leastDecodeToDisplayDelta, track.timescale) + '
max' + track.cts_shift.greatestDecodeToDisplayDelta + ' - ' + Log.getDurationString(track.cts_shift.greatestDecodeToDisplayDelta, track.timescale) + '
start' + track.cts_shift.compositionStartTime + ' - ' + Log.getDurationString(track.cts_shift.compositionStartTime, track.timescale) + '
end' + track.cts_shift.compositionEndTime + ' - ' + Log.getDurationString(track.cts_shift.compositionEndTime, track.timescale) + '
'; } html += ''; html += '' + track.nb_samples + ''; html += '' + Math.floor((track.bitrate * 100) / 1024) / 100 + ''; html += '' + track.codec + ''; html += '' + track.language + ''; html += '' + track.kind.schemeURI + ' - ' + track.kind.value + ''; html += '' + track.track_width + ''; html += '' + track.track_height + ''; html += '' + track.layer + ''; return html; } function getVideoTrackHeader() { var html = ''; html += 'Width'; html += 'Height'; return html; } function getVideoTrackInfo(track) { var html = ''; html += '' + track.video.width + ''; html += '' + track.video.height + ''; return html; } function getAudioTrackHeader() { var html = ''; html += 'Sample Rate'; html += 'Channel Count'; html += 'Volume'; return html; } function getAudioTrackInfo(track) { var html = ''; html += '' + track.audio.sample_rate + ''; html += '' + track.audio.channel_count + ''; html += '' + track.volume + ''; return html; } function generateTrackHeader(type) { var html = ''; html += ''; html += getBasicTrackHeader(); switch (type) { case 'Video': html += getVideoTrackHeader(); break; case 'Audio': html += getAudioTrackHeader(); break; case 'Subtitle': break; case 'Metadata': break; case 'Hint': break; default: break; } if (displaySourceBuffer) { html += 'Source Buffer Status'; } html += ''; return html; } function generateTrackInfo(track, type) { var html = ''; html += ''; html += getBasicTrackInfo(track); switch (type) { case 'Video': html += getVideoTrackInfo(track); break; case 'Audio': html += getAudioTrackInfo(track); break; case 'Subtitle': break; case 'Metadata': break; case 'Hint': break; default: break; } if (displaySourceBuffer) { var mime = 'video/mp4; codecs=\"' + track.codec + '\"'; if (MediaSource.isTypeSupported(mime)) { html += '' + '' + ''; } else { html += 'Not supported by your browser, exposing track content using HTML TextTrack '; } } html += ''; return html; } function getTrackListInfo(tracks, type) { var html = ''; html += "
"; if (tracks.length > 0) { html += type + ' track(s) info'; html += ''; html += generateTrackHeader(type); for (var i = 0; i < tracks.length; i++) { html += generateTrackInfo(tracks[i], type); } html += '
'; } html += '
'; return html; } var displaySourceBuffer = true; function displayMovieInfo(info, div, _displaySourceBuffer) { if (_displaySourceBuffer !== undefined) displaySourceBuffer = _displaySourceBuffer; var html = 'Movie Info'; var fileLength = 0; if (typeof downloader !== 'undefined') { downloader.getFileLength(); } html += '
'; html += ''; html += ''; if (info.timescale) { html += ''; } html += ''; html += ''; html += ''; html += ''; html += ''; if (info.isFragmented) { html += ''; } if (info.created && info.modified) { html += ''; } html += '
File Size / Bitrate' + fileLength + ' bytes / ' + Math.floor((fileLength * 8 * info.timescale) / (info.duration * 1000)) + ' kbps
Duration / Timescale' + info.duration + '/' + info.timescale + ' (' + Log.getDurationString(info.duration, info.timescale) + ')
Brands (major/compatible)' + info.brands + '
MIME' + info.mime + '
Progressive' + info.isProgressive + '
Fragmented' + info.isFragmented + '
MPEG-4 IOD' + info.hasIOD + '
Fragmented duration' + info.fragment_duration.num + (info.fragment_duration ? ' - ' + Log.getDurationString(info.fragment_duration.num, info.fragment_duration.den) : '') + '
Creation / Modification Dates' + dateToInput(info.created) + ' / ' + dateToInput(info.modified) + '
'; if (info.videoTracks) { html += getTrackListInfo(info.videoTracks, 'Video'); } if (info.audioTracks) { html += getTrackListInfo(info.audioTracks, 'Audio'); } if (info.subtitleTracks) { html += getTrackListInfo(info.subtitleTracks, 'Subtitle / Text'); } if (info.metadataTracks) { html += getTrackListInfo(info.metadataTracks, 'Metadata'); } if (info.otherTracks) { html += getTrackListInfo(info.otherTracks, 'Other'); } html += '
'; div.innerHTML = html; } function dateToInput(date) { var d = date.getDate(); var m = date.getMonth() + 1; var y = date.getFullYear(); var h = date.getHours(); var mn = date.getMinutes(); if (d < 10) { d = '0' + d; } if (m < 10) { m = '0' + m; } if (h < 10) { h = '0' + h; } if (mn < 10) { mn = '0' + mn; } return ( "" ); }