Compare commits

...
Author SHA1 Message Date
Vanilagy a1aaa8e36a Bump to beta 9 2026-04-28 14:42:57 +02:00
Vanilagy aa4966a5f1 Update codec soup and docs 2026-04-28 14:41:20 +02:00
Vanilagy ff46a274b1 Switch back to dynamic import, leave package.json unchanged though 2026-04-28 14:36:48 +02:00
Vanilagy bf9e360587 Revert back to static import of fs, don't like to CJS bundles in package.json 2026-04-28 14:24:58 +02:00
Vanilagy 1fd99b5015 Fix Source assertion failure 2026-04-28 14:09:18 +02:00
Vanilagy 6182af7c29 Add HLS transcoding example 2026-04-28 13:54:42 +02:00
David P.andGitHub 3e70e8912b Merge pull request #291 from Vanilagy/hls
HLS read/write support
2026-04-28 10:09:24 +02:00
Vanilagy a3aa6a69ac Add use case 2026-04-28 10:04:14 +02:00
Vanilagy 105a7dda2f Move it forward 2026-04-27 21:02:59 +02:00
Vanilagy 0f6c374750 Ensure extensions work with huge timestamps, fix AC3 and AAC extension's behavior with huge timestamps 2026-04-27 20:58:05 +02:00
Vanilagy 0cc564b47a Bump to beta 8 2026-04-27 19:47:27 +02:00
Vanilagy 57b265b897 They were indeed temp 2026-04-27 19:46:06 +02:00
Vanilagy 631d207ca2 Clarify 2026-04-27 19:41:59 +02:00
Vanilagy 9a1b8b2602 Add timestampBase option for live MediaStreamTrack sources 2026-04-27 19:38:45 +02:00
Vanilagy c89e7429f7 Fix FilePathSource/FilePathTarget not working in server-side environments using CJS (closes #360) 2026-04-27 18:29:52 +02:00
Vanilagy 15beb69137 Update convert.html 2026-04-27 17:58:55 +02:00
Vanilagy dfdf7c5648 Make esbuild target es2021 2026-04-27 17:15:40 +02:00
Vanilagy cf8cea2957 Fix attribute parsing bug 2026-04-27 17:12:28 +02:00
107 changed files with 882 additions and 40961 deletions
+1 -1
View File
@@ -78,7 +78,7 @@ Mediabunny is a JavaScript library for reading, writing, and converting media (l
Core features include:
- **Wide format support**: Read **and** write MP4, MOV, WebM, MKV, WAVE, MP3, Ogg, ADTS, FLAC, MPEG-TS, HLS
- **Wide format support**: Read **and** write MP4, MOV, WebM, MKV, HLS, WAVE, MP3, Ogg, ADTS, FLAC, MPEG-TS
- **Built-in encoding & decoding**: Supports 25+ video, audio, and subtitle codecs, hardware-accelerated using the WebCodecs API
- **High precision**: Fine-grained, microsecond-accurate reading and writing operations
- **Conversion API**: Easy-to-use API with features such as transmuxing, transcoding, resizing, rotation, cropping, resampling, trimming, and more
+15 -25
View File
@@ -6,7 +6,7 @@
<script type="module">
//MediabunnyMp3Encoder.registerMp3Encoder();
MediabunnyAc3.registerAc3Encoder();
MediabunnyAc3.registerAc3Decoder();
const fileInput = document.createElement('input');
fileInput.type = 'file';
@@ -23,9 +23,7 @@
chunked: true,
chunkSize: 2**20
});
const outputFormat = new Mediabunny.HlsOutputFormat({
segmentFormat: new Mediabunny.MpegTsOutputFormat(),
});
const outputFormat = new Mediabunny.WavOutputFormat();
const p = document.createElement('p');
p.textContent = 'Capturing...';
@@ -52,17 +50,16 @@
const output = new Mediabunny.Output({
format: outputFormat,
target: new Mediabunny.PathedTarget('master.m3u8', ({ path }) => new Mediabunny.BufferTarget()),
target,
});
let input;
const tracks = [];
let start = 0;
if (false) {
if (true) {
input = new Mediabunny.Input({
entryPath: 'https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8',
source: ({ path }) => new Mediabunny.UrlSource(path),
source: new Mediabunny.UrlSource('http://localhost:8000/index.m3u8'),
formats: Mediabunny.ALL_FORMATS,
});
@@ -88,15 +85,15 @@
});
}
const primaryTrack = await input.getPrimaryAudioTrack();
const startTime = await primaryTrack.getFirstTimestamp();
console.log(startTime)
let ctx = null;
let conversion = await Mediabunny.Conversion.init({
input,
output,
audio: (track, n) => [{
codec: 'aac',
}, {
codec: 'aac',
}],
audio: (track) => ({ discard: track.number !== primaryTrack.number }),
/*
video: {
discard: true,
@@ -121,13 +118,9 @@
bitrate: 320000
},
*/
video: [
{ height: 1080 },
{ height: 720 },
{ height: 480 },
{ height: 360 },
{ height: 240 },
],
video: {
discard: true,
},
tags: {} ?? {
title: 'Bigggy',
artist: 'Buck Bunny',
@@ -146,11 +139,8 @@
}
},
trim: {
//end: 5,
//start,
//end: start + 5,
////start: 0,
//end: 2
start: startTime,
end: startTime + 2,
},
});
//console.log(conversion);
+4 -4
View File
@@ -19,7 +19,7 @@
button.addEventListener('click', async () => {
const stream = await navigator.mediaDevices.getDisplayMedia({ video: true, audio: false });
const videoTrack = stream.getVideoTracks()[0];
const audioTrack = stream.getAudioTracks()[0];
const audioTrack = null && stream.getAudioTracks()[0];
const output = new Mediabunny.Output({
target: new Mediabunny.BufferTarget(),
@@ -32,7 +32,7 @@
codec: 'vp9',
bitrate: Mediabunny.QUALITY_MEDIUM,
sizeChangeBehavior: 'passThrough',
});
}, { timestampBase: 'unix' });
videoSource.errorPromise.catch((d) => console.log("Hello?????", d));
@@ -67,9 +67,9 @@
await output.finalize();
console.log(output.target.buffer);
download(new Blob([output.target.buffer]), 'livetest' + output.format.fileExtension);
//download(new Blob([output.target.buffer]), 'livetest' + output.format.fileExtension);
videoTrack?.stop();
audioTrack?.stop();
});
</script>
</script>
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 148 KiB

+8 -6
View File
@@ -194,22 +194,23 @@ const output = new Output({
const videoSourceFull = new MediaStreamVideoTrackSource(displayTrack, {
codec: 'avc',
bitrate: QUALITY_HIGH,
});
}, { timestampBase: 'unix' });
// 480p video
const videoSource480p = new MediaStreamVideoTrackSource(displayTrack, {
codec: 'avc',
bitrate: QUALITY_MEDIUM,
transform: { height: 480 },
});
}, { timestampBase: 'unix' });
// Audio
const audioSource = new MediaStreamAudioTrackSource(micTrack, {
codec: 'aac',
bitrate: QUALITY_HIGH,
});
}, { timestampBase: 'unix' });
output.addVideoTrack(videoSourceFull);
output.addVideoTrack(videoSource480p);
output.addAudioTrack(audioSource);
// The "unix" stuff ensures that #EXT-X-PROGRAM-DATE-TIME gets generated
output.addVideoTrack(videoSourceFull, { isRelativeToUnixEpoch: true });
output.addVideoTrack(videoSource480p, { isRelativeToUnixEpoch: true });
output.addAudioTrack(audioSource, { isRelativeToUnixEpoch: true });
await output.start();
@@ -240,6 +241,7 @@ The best thing: the player required basically no changes to be adapted for HLS.
Mediabunny's [`Input`](../guide/reading-media-files) and [`Output`](../guide/writing-media-files) APIs give you fine-grained control over basically everything, meaning you can do any arbitrary media operation on HLS playlists, such as:
- Converting/compressing them
- Downloading a section of a live stream
- Extracting video thumbnails
- Extracting specific tracks
- Extracting metadata (duration, dimensions, tracks, ...)
+6
View File
@@ -43,4 +43,10 @@ features:
target: _self
icon:
src: /mingcute--microphone-line.svg
- title: HLS transcoding
details: Convert one video into a full HLS manifest with five video renditions and one audio track.
link: /examples/hls-transcoding/
target: _self
icon:
src: /mingcute--live-line.svg
---
+23
View File
@@ -500,3 +500,26 @@ const conversion = await Conversion.init({ input, output });
conversion.utilizedTracks; // => InputTrack[]
```
A track may appear multiple times in this list when [fan-out](#track-fan-out) produces multiple output tracks from it.
## Converting live streams
Live inputs, like HLS live streams, can also be used with the Conversion API. In this case, by default, the conversion will run until the live stream has ended.
If you only want to convert a part of the live stream instead of waiting until it has ended, you can [trim](#trimming) the conversion. For example, here we're capturing the next 60 seconds of the live stream:
```ts
// Get the live edge
const currentDuration = await input.getDurationFromMetadata(undefined, {
skipLiveWait: true,
});
const conversion = await Conversion.init({
input,
output,
trim: {
// Start at the current live edge
start: currentDuration,
// End at most 60 seconds later
end: currentDuration + 60,
},
});
```
@@ -99,6 +99,8 @@ Not all codecs can be used with all containers. The following table specifies th
| `'alaw'` | | ✓ | | | | | ✓ | | | |
| `'webvtt'`[^webvtt] | (✓) | | (✓) | (✓) | | | | | | |
For HLS, the supported codecs depend on the segment format chosen.
[^aac]: In some browsers, AAC encoding is not supported by WebCodecs. You can polyfill it with the [`@mediabunny/aac-encoder`](./extensions/aac-encoder) extension package.
[^mp3]: MP3 encoding is not supported by WebCodecs. You can polyfill it with the [`@mediabunny/mp3-encoder`](./extensions/mp3-encoder) extension package.
[^flac]: FLAC encoding is not supported by WebCodecs. You can polyfill it with the [`@mediabunny/flac-encoder`](./extensions/flac-encoder) extension package.
+12 -5
View File
@@ -89,16 +89,23 @@ console.log(writtenFiles);
```ts
const root = await navigator.storage.getDirectory();
const writePromises: Promise<void>[] = [];
const output = new Output({
target: new PathedTarget(
'master.m3u8',
async ({ path }) => {
const handle = await root.getFileHandle(path, { create: true });
const writable = await handle.createWritable();
return new StreamTarget(writable);
},
async ({ path }) => new BufferTarget({
onFinalize: (buffer) => {
writePromises.push((async () => {
const handle = await root.getFileHandle(path, { create: true });
const writable = await handle.createWritable();
await writable.write(buffer);
await writable.close();
})());
},
}),
),
onFinalize: () => Promise.all(writePromises),
// ...
});
+1 -1
View File
@@ -186,7 +186,7 @@ npm install mediabunny
```ts
const input = new Input({
source: new UrlSource('./bigbuckbunny.mp4'),
formats: ALL_FORMATS, // .mp4, .webm, .wav, ...
formats: ALL_FORMATS, // .mp4, .webm, .wav, .m3u8, ...
});
const duration = await input.computeDuration();
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z"/><path fill="#06b6d4" d="M16.95 2.586a1 1 0 0 1 0 1.414l-3 3H19a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h3.636L7.05 5.414A1 1 0 0 1 8.465 4l2.474 2.475a.5.5 0 0 0 .707 0l3.89-3.89a1 1 0 0 1 1.414 0M19 9H5v10h14zM8.98 11.547a1.232 1.232 0 0 1 1.72-.994a22 22 0 0 1 2.2 1.123a22 22 0 0 1 2.075 1.346c.668.494.67 1.489 0 1.984A22 22 0 0 1 12.9 16.35c-.997.576-1.785.943-2.2 1.124a1.23 1.23 0 0 1-1.72-.993a23 23 0 0 1-.128-2.467c0-1.14.078-2.014.128-2.467m1.902 1.306a23 23 0 0 0 0 2.32a23 23 0 0 0 2.008-1.16a23 23 0 0 0-2.008-1.16"/></g></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

+272
View File
@@ -0,0 +1,272 @@
import {
Input,
ALL_FORMATS,
BlobSource,
UrlSource,
Output,
PathedTarget,
BufferTarget,
HlsOutputFormat,
MpegTsOutputFormat,
Conversion,
QUALITY_VERY_HIGH,
QUALITY_HIGH,
QUALITY_MEDIUM,
QUALITY_LOW,
QUALITY_VERY_LOW,
} from 'mediabunny';
import SampleFileUrl from '../../docs/assets/big-buck-bunny-trimmed.mp4';
(document.querySelector('#sample-file-download') as HTMLAnchorElement).href = SampleFileUrl;
declare global {
interface Window {
showDirectoryPicker(options: { mode: 'readwrite' }): Promise<FileSystemDirectoryHandle>;
}
}
const selectDirectoryButton = document.querySelector('#select-directory') as HTMLButtonElement;
const directoryNameElement = document.querySelector('#directory-name') as HTMLParagraphElement;
const selectMediaButton = document.querySelector('#select-file') as HTMLButtonElement;
const loadSampleButton = document.querySelector('#load-sample') as HTMLButtonElement;
const fileNameElement = document.querySelector('#file-name') as HTMLParagraphElement;
const dashboard = document.querySelector('#dashboard') as HTMLDivElement;
const statusElement = document.querySelector('#status') as HTMLParagraphElement;
const progressBar = document.querySelector('#progress-bar') as HTMLDivElement;
const percentIndicator = document.querySelector('#percent-indicator') as HTMLParagraphElement;
const speedometer = document.querySelector('#speedometer') as HTMLParagraphElement;
const bytesWrittenElement = document.querySelector('#bytes-written') as HTMLParagraphElement;
const filesCreatedElement = document.querySelector('#files-created') as HTMLParagraphElement;
const latestFileElement = document.querySelector('#latest-file') as HTMLParagraphElement;
const errorElement = document.querySelector('#error-element') as HTMLParagraphElement;
let currentConversion: Conversion | null = null;
let directoryHandle: FileSystemDirectoryHandle | null = null;
let progress = 0;
let processedTime = 0;
let startTime: number | null = null;
let bytesWritten = 0;
let filesCreated = 0;
let latestFile = '-';
let status = 'Waiting for directory';
let fileName = '';
let directoryName = '';
let errorMessage = '';
let renderIntervalId = -1;
const filePromises: Promise<void>[] = [];
const convertToHls = async (resource: File | string) => {
await currentConversion?.cancel();
resetDashboard();
fileName = resource instanceof File ? resource.name : resource;
updateFileUi();
clearInterval(renderIntervalId);
renderIntervalId = window.setInterval(render, 1000 / 60);
render();
try {
// Load the input
const source = resource instanceof File
? new BlobSource(resource)
: new UrlSource(resource);
const input = new Input({
source,
formats: ALL_FORMATS,
});
const output = new Output({
// Define the output format (HLS with MPEG-TS segments)
format: new HlsOutputFormat({
segmentFormat: new MpegTsOutputFormat(),
}),
// Describe where the files will be written
target: new PathedTarget(
'master.m3u8',
({ path }) => createFileTarget(path),
),
onFinalize: () => Promise.all(filePromises),
});
currentConversion = await Conversion.init({
input,
output,
tracks: 'primary', // Use only the primary video and audio tracks of the input
video: [
{ codec: 'avc', height: 1080, bitrate: QUALITY_VERY_HIGH },
{ codec: 'avc', height: 720, bitrate: QUALITY_HIGH },
{ codec: 'avc', height: 480, bitrate: QUALITY_MEDIUM },
{ codec: 'avc', height: 360, bitrate: QUALITY_LOW },
{ codec: 'avc', height: 240, bitrate: QUALITY_VERY_LOW },
],
audio: [
{ codec: 'aac', bitrate: QUALITY_HIGH },
],
});
if (!currentConversion.isValid) {
console.info(currentConversion.discardedTracks);
throw new Error('Conversion is invalid and cannot be executed; see the console for more.');
}
currentConversion.onProgress = (newProgress, newProcessedTime) => {
progress = newProgress;
processedTime = newProcessedTime;
startTime ??= performance.now();
};
status = 'Encoding renditions and writing HLS files';
await currentConversion.execute();
progress = 1;
status = 'HLS manifest complete';
} catch (error) {
console.error(error);
await currentConversion?.cancel();
status = 'Conversion failed';
errorMessage = String(error);
updateFileUi();
} finally {
clearInterval(renderIntervalId);
renderIntervalId = -1;
render();
}
};
const formatBytes = (bytes: number) => {
if (bytes < 1000) {
return `${bytes} B`;
}
const units = ['kB', 'MB', 'GB', 'TB'];
let size = bytes / 1000;
let unitIndex = 0;
while (size >= 1000) {
size /= 1000;
unitIndex++;
}
return `${+size.toFixed(2)} ${units[unitIndex]}`;
};
const render = () => {
const percentage = Math.floor(progress * 100);
const displayedPercentage = status === 'HLS manifest complete' ? 100 : Math.min(percentage, 99);
progressBar.style.width = `${displayedPercentage}%`;
percentIndicator.textContent = `${displayedPercentage}%`;
bytesWrittenElement.textContent = formatBytes(bytesWritten);
filesCreatedElement.textContent = filesCreated.toString();
latestFileElement.textContent = latestFile;
statusElement.textContent = status;
if (startTime !== null) {
const elapsedSeconds = (performance.now() - startTime) / 1000;
const factor = processedTime / elapsedSeconds;
speedometer.textContent = `${factor.toPrecision(3)}x`;
} else {
speedometer.textContent = '-';
}
};
const updateFileUi = () => {
directoryNameElement.textContent = directoryName;
fileNameElement.textContent = fileName;
errorElement.textContent = errorMessage;
};
const resetDashboard = () => {
progress = 0;
processedTime = 0;
startTime = null;
bytesWritten = 0;
filesCreated = 0;
latestFile = '-';
status = 'Preparing HLS output';
errorMessage = '';
filePromises.length = 0;
dashboard.classList.remove('opacity-50');
updateFileUi();
};
const createFileTarget = async (path: string) => {
const target = new BufferTarget({
onFinalize: (buffer) => {
filePromises.push((async () => {
const handle = await directoryHandle!.getFileHandle(path, { create: true });
const writable = await handle.createWritable();
await writable.write(buffer);
await writable.close();
})());
},
});
let fileBytes = 0;
filesCreated++;
latestFile = path;
target.on('write', ({ end }) => {
const newFileBytes = Math.max(fileBytes, end);
bytesWritten += newFileBytes - fileBytes;
fileBytes = newFileBytes;
});
return target;
};
// eslint-disable-next-line @typescript-eslint/no-misused-promises
selectDirectoryButton.addEventListener('click', async () => {
directoryHandle = await window.showDirectoryPicker({ mode: 'readwrite' });
directoryName = `Selected directory: ${directoryHandle.name}`;
status = 'Waiting for source video';
selectDirectoryButton.style.display = 'none';
selectMediaButton.disabled = false;
loadSampleButton.disabled = false;
directoryNameElement.style.display = '';
directoryNameElement.textContent = directoryName;
statusElement.textContent = status;
});
selectMediaButton.addEventListener('click', () => {
const fileInput = document.createElement('input');
fileInput.type = 'file';
fileInput.accept = 'video/*,video/x-matroska,video/mp2t,.ts';
fileInput.addEventListener('change', () => {
const file = fileInput.files![0];
if (file) {
void convertToHls(file);
}
});
fileInput.click();
});
loadSampleButton.addEventListener('click', () => {
const url = prompt(
'Please enter a URL of a media file. Note that it must be HTTPS and support cross-origin requests, so have the'
+ ' right CORS headers set.',
'https://remotion.media/BigBuckBunny.mp4',
);
if (!url) {
return;
}
void convertToHls(url);
});
document.addEventListener('dragover', (event) => {
event.preventDefault();
event.dataTransfer!.dropEffect = 'copy';
});
document.addEventListener('drop', (event) => {
event.preventDefault();
const files = event.dataTransfer!.files;
const file = files[0];
if (file) {
void convertToHls(file);
}
});
+126
View File
@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html lang="en" translate="no">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HLS transcoding example | Mediabunny</title>
<script type="module" src="../base.ts"></script>
<script type="module" src="./hls-transcoding.ts"></script>
<link rel="stylesheet" href="../base.css">
<link rel="icon" href="../../docs/public/mediabunny-logo.svg">
</head>
<body class="flex flex-col items-center bg-zinc-50 px-2 py-10 text-zinc-800 dark:bg-zinc-900 dark:text-zinc-200">
<h1 class="text-center text-3xl font-bold text-cyan-500">HLS transcoding example</h1>
<p class="max-w-2xl text-center">
Select a directory, then a video. Mediabunny will create a complete HLS VOD package with five video renditions and one audio track.
</p>
<div class="mt-5 flex flex-col items-center gap-1">
<div class="flex flex-wrap justify-center gap-2">
<button id="select-directory" class="rounded-lg bg-cyan-500 px-5 py-2 font-medium text-white hover:bg-cyan-600">
Select directory
</button>
<button id="select-file" disabled class="rounded-lg bg-zinc-200 px-5 py-2 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-zinc-750 dark:hover:bg-zinc-700 hover:bg-zinc-300">
Select local file
</button>
<button id="load-sample" disabled class="rounded-lg bg-zinc-200 px-5 py-2 disabled:cursor-not-allowed disabled:opacity-50 dark:bg-zinc-750 dark:hover:bg-zinc-700 hover:bg-zinc-300">
Load remote URL
</button>
</div>
<a id="sample-file-download" download="big-buck-bunny-trimmed.mp4" class="text-xs opacity-50 hover:opacity-70 hover:underline">
Download sample file
</a>
</div>
<p id="directory-name" class="mt-3 max-w-[36rem] text-center text-xs opacity-60" style="display: none;"></p>
<p id="file-name" class="min-h-5 max-w-[36rem] text-center text-xs opacity-60"></p>
<p id="error-element" class="mx-auto mt-2 max-w-[36rem] text-center text-red-500"></p>
<hr class="my-4 w-full max-w-4xl border-zinc-300 dark:border-zinc-700">
<div class="grid w-full max-w-4xl gap-4 md:grid-cols-2">
<section class="rounded-xl bg-zinc-200 p-5 dark:bg-zinc-750">
<h2 class="text-lg font-bold text-cyan-500">Renditions</h2>
<div class="mt-3 grid gap-2 text-sm">
<div class="grid grid-cols-[5rem_1fr] rounded-lg bg-zinc-100 px-3 py-2 dark:bg-zinc-800">
<p class="font-bold">1080p</p>
<p class="opacity-70">AVC video</p>
</div>
<div class="grid grid-cols-[5rem_1fr] rounded-lg bg-zinc-100 px-3 py-2 dark:bg-zinc-800">
<p class="font-bold">720p</p>
<p class="opacity-70">AVC video</p>
</div>
<div class="grid grid-cols-[5rem_1fr] rounded-lg bg-zinc-100 px-3 py-2 dark:bg-zinc-800">
<p class="font-bold">480p</p>
<p class="opacity-70">AVC video</p>
</div>
<div class="grid grid-cols-[5rem_1fr] rounded-lg bg-zinc-100 px-3 py-2 dark:bg-zinc-800">
<p class="font-bold">360p</p>
<p class="opacity-70">AVC video</p>
</div>
<div class="grid grid-cols-[5rem_1fr] rounded-lg bg-zinc-100 px-3 py-2 dark:bg-zinc-800">
<p class="font-bold">240p</p>
<p class="opacity-70">AVC video</p>
</div>
<hr class="my-1 border-zinc-300 dark:border-zinc-700">
<div class="grid grid-cols-[5rem_1fr] rounded-lg bg-zinc-100 px-3 py-2 dark:bg-zinc-800">
<p class="font-bold">Audio</p>
<p class="opacity-70">AAC audio</p>
</div>
</div>
</section>
<section id="dashboard" class="rounded-xl bg-zinc-200 p-5 opacity-50 transition-opacity dark:bg-zinc-750">
<div class="flex items-start justify-between gap-4">
<div>
<h2 class="text-lg font-bold text-cyan-500">Progress</h2>
<p id="status" class="mt-1 text-sm opacity-70">Waiting for directory</p>
</div>
<p id="percent-indicator" class="text-4xl font-bold tabular-nums text-cyan-500">0%</p>
</div>
<div id="progress-bar-container" class="mt-4 h-3 overflow-hidden rounded-full bg-zinc-300 dark:bg-zinc-900">
<div id="progress-bar" class="h-full w-0 bg-emerald-500 transition-[width] duration-150"></div>
</div>
<div class="mt-4 grid grid-cols-2 gap-2 text-sm">
<div class="rounded-lg bg-zinc-100 p-3 dark:bg-zinc-800">
<p class="text-xs opacity-60">Real-time speed</p>
<p id="speedometer" class="mt-1 text-lg font-bold tabular-nums">-</p>
</div>
<div class="rounded-lg bg-zinc-100 p-3 dark:bg-zinc-800">
<p class="text-xs opacity-60">Bytes written</p>
<p id="bytes-written" class="mt-1 text-lg font-bold tabular-nums">0 B</p>
</div>
<div class="rounded-lg bg-zinc-100 p-3 dark:bg-zinc-800">
<p class="text-xs opacity-60">Files created</p>
<p id="files-created" class="mt-1 text-lg font-bold tabular-nums">0</p>
</div>
<div class="rounded-lg bg-zinc-100 p-3 dark:bg-zinc-800">
<p class="text-xs opacity-60">Latest file</p>
<p id="latest-file" class="mt-1 truncate text-lg font-bold tabular-nums">-</p>
</div>
</div>
</section>
</div>
<a href="/" class="fixed left-0 top-0 flex items-center gap-2 px-5 py-2">
<img src="../../docs/public/mediabunny-logo.svg" class="size-6">
<p class="text-sm font-medium">Mediabunny</p>
</a>
<a
href="https://github.com/Vanilagy/mediabunny/tree/main/examples/hls-transcoding"
target="_blank"
class="fixed right-0 top-0 flex items-center gap-2 rounded-bl-xl bg-zinc-200 px-5 py-2 hover:bg-zinc-300 dark:bg-zinc-750 dark:hover:bg-zinc-700"
>
<img src="../../docs/assets/github-mark.svg" class="size-6 dark:invert">
<p>View source code</p>
</a>
</body>
</html>
+6 -6
View File
@@ -1,12 +1,12 @@
{
"name": "mediabunny",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mediabunny",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"license": "MPL-2.0",
"workspaces": [
"packages/*"
@@ -12077,7 +12077,7 @@
},
"packages/aac-encoder": {
"name": "@mediabunny/aac-encoder",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"license": "MPL-2.0",
"devDependencies": {
"@types/emscripten": "^1.40.1"
@@ -12092,7 +12092,7 @@
},
"packages/ac3": {
"name": "@mediabunny/ac3",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"license": "MPL-2.0",
"devDependencies": {
"@types/emscripten": "^1.40.1"
@@ -12107,7 +12107,7 @@
},
"packages/flac-encoder": {
"name": "@mediabunny/flac-encoder",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"license": "MPL-2.0",
"devDependencies": {
"@types/emscripten": "^1.40.1"
@@ -12122,7 +12122,7 @@
},
"packages/mp3-encoder": {
"name": "@mediabunny/mp3-encoder",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"license": "MPL-2.0",
"devDependencies": {
"@types/emscripten": "^1.40.1"
+3 -3
View File
@@ -1,19 +1,19 @@
{
"name": "mediabunny",
"author": "Vanilagy",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.",
"type": "module",
"workspaces": [
"packages/*"
],
"main": "./dist/bundles/mediabunny.cjs",
"main": "./dist/modules/src/index.js",
"module": "./dist/modules/src/index.js",
"types": "./dist/modules/src/index.d.ts",
"exports": {
"types": "./dist/modules/src/index.d.ts",
"import": "./dist/modules/src/index.js",
"require": "./dist/bundles/mediabunny.cjs"
"require": "./dist/modules/src/index.js"
},
"files": [
"README.md",
Binary file not shown.
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@mediabunny/aac-encoder",
"author": "Vanilagy",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"description": "AAC encoder extension for Mediabunny, based on FFmpeg.",
"main": "./dist/bundles/mediabunny-aac-encoder.mjs",
"module": "./dist/bundles/mediabunny-aac-encoder.mjs",
+4 -3
View File
@@ -7,6 +7,7 @@
*/
#include <emscripten.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "libavcodec/avcodec.h"
@@ -20,7 +21,7 @@ typedef struct {
AVFrame *frame;
float *input_buffer;
int input_buffer_size;
int encoded_pts;
int64_t encoded_pts;
int encoded_duration;
} EncoderContext;
@@ -123,7 +124,7 @@ float *get_encode_input_ptr(EncoderContext *ctx, int size) {
}
EMSCRIPTEN_KEEPALIVE
int send_frame(EncoderContext *ctx, int pts) {
int send_frame(EncoderContext *ctx, int64_t pts) {
int channels = ctx->codec_ctx->ch_layout.nb_channels;
int frame_size = ctx->frame->nb_samples;
@@ -171,7 +172,7 @@ uint8_t *get_encoded_data(EncoderContext *ctx) {
}
EMSCRIPTEN_KEEPALIVE
int get_encoded_pts(EncoderContext *ctx) {
int64_t get_encoded_pts(EncoderContext *ctx) {
return ctx->encoded_pts;
}
+6 -6
View File
@@ -21,12 +21,12 @@ let getEncoderFrameSize: (ctx: number) => number;
let getEncoderExtradata: (ctx: number) => number;
let getEncoderExtradataSize: (ctx: number) => number;
let getEncodeInputPtr: (ctx: number, size: number) => number;
let sendFrameFn: (ctx: number, pts: number) => number;
let sendFrameFn: (ctx: number, pts: bigint) => number;
let receivePacketFn: (ctx: number) => number;
let flushEncoderStartFn: (ctx: number) => void;
let resetEncoderFn: (ctx: number) => void;
let getEncodedData: (ctx: number) => number;
let getEncodedPts: (ctx: number) => number;
let getEncodedPts: (ctx: number) => bigint;
let getEncodedDuration: (ctx: number) => number;
const ensureModule = async () => {
if (!module) {
@@ -43,12 +43,12 @@ const ensureModule = async () => {
getEncoderExtradata = module.cwrap('get_encoder_extradata', 'number', ['number']);
getEncoderExtradataSize = module.cwrap('get_encoder_extradata_size', 'number', ['number']);
getEncodeInputPtr = module.cwrap('get_encode_input_ptr', 'number', ['number', 'number']);
sendFrameFn = module.cwrap('send_frame', 'number', ['number', 'number']);
sendFrameFn = module.cwrap('send_frame', 'number', ['number', 'number']) as unknown as typeof sendFrameFn;
receivePacketFn = module.cwrap('receive_packet', 'number', ['number']);
flushEncoderStartFn = module.cwrap('flush_encoder_start', null, ['number']);
resetEncoderFn = module.cwrap('reset_encoder', null, ['number']);
getEncodedData = module.cwrap('get_encoded_data', 'number', ['number']);
getEncodedPts = module.cwrap('get_encoded_pts', 'number', ['number']);
getEncodedPts = module.cwrap('get_encoded_pts', 'number', ['number']) as unknown as typeof getEncodedPts;
getEncodedDuration = module.cwrap('get_encoded_duration', 'number', ['number']);
}
};
@@ -81,7 +81,7 @@ const drainPackets = (ctx: number) => {
while ((size = receivePacketFn(ctx)) > 0) {
const ptr = getEncodedData(ctx);
const encodedData = module.HEAPU8.slice(ptr, ptr + size).buffer;
const pts = getEncodedPts(ctx);
const pts = Number(getEncodedPts(ctx));
const duration = getEncodedDuration(ctx);
packets.push({ encodedData, pts, duration });
}
@@ -98,7 +98,7 @@ const encode = (ctx: number, audioData: ArrayBuffer, timestamp: number) => {
}
module.HEAPU8.set(audioBytes, inputPtr);
const ret = sendFrameFn(ctx, timestamp);
const ret = sendFrameFn(ctx, BigInt(timestamp));
if (ret < 0) {
throw new Error(`Encode failed with error code ${ret}.`);
}
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@mediabunny/ac3",
"author": "Vanilagy",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"description": "AC-3 and E-AC-3 (Dolby Digital) decoder and encoder extension for Mediabunny, based on FFmpeg.",
"main": "./dist/bundles/mediabunny-ac3.mjs",
"module": "./dist/bundles/mediabunny-ac3.mjs",
+7 -6
View File
@@ -7,6 +7,7 @@
*/
#include <emscripten.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include "libavcodec/avcodec.h"
@@ -72,7 +73,7 @@ uint8_t *configure_decode_packet(DecoderContext *ctx, int size) {
}
EMSCRIPTEN_KEEPALIVE
int decode_packet(DecoderContext *ctx, int pts) {
int decode_packet(DecoderContext *ctx, int64_t pts) {
ctx->packet->pts = pts;
int ret = avcodec_send_packet(ctx->codec_ctx, ctx->packet);
av_packet_unref(ctx->packet);
@@ -110,8 +111,8 @@ int get_decoded_sample_count(DecoderContext *ctx) {
}
EMSCRIPTEN_KEEPALIVE
int get_decoded_pts(DecoderContext *ctx) {
return (int)ctx->frame->pts;
int64_t get_decoded_pts(DecoderContext *ctx) {
return ctx->frame->pts;
}
EMSCRIPTEN_KEEPALIVE
@@ -135,7 +136,7 @@ typedef struct {
AVFrame *frame;
float *input_buffer;
int input_buffer_size;
int encoded_pts;
int64_t encoded_pts;
int encoded_duration;
} EncoderContext;
@@ -229,7 +230,7 @@ float *get_encode_input_ptr(EncoderContext *ctx, int size) {
}
EMSCRIPTEN_KEEPALIVE
int encode_frame(EncoderContext *ctx, int pts) {
int encode_frame(EncoderContext *ctx, int64_t pts) {
int channels = ctx->codec_ctx->ch_layout.nb_channels;
int frame_size = ctx->frame->nb_samples;
@@ -270,7 +271,7 @@ uint8_t *get_encoded_data(EncoderContext *ctx) {
}
EMSCRIPTEN_KEEPALIVE
int get_encoded_pts(EncoderContext *ctx) {
int64_t get_encoded_pts(EncoderContext *ctx) {
return ctx->encoded_pts;
}
+12 -12
View File
@@ -18,23 +18,23 @@ let modulePromise: Promise<ExtendedEmscriptenModule> | null = null;
let initDecoderFn: (codecId: number) => number;
let configureDecodePacket: (ctx: number, size: number) => number;
let decodePacket: (ctx: number, pts: number) => number;
let decodePacket: (ctx: number, pts: bigint) => number;
let getDecodedFormat: (ctx: number) => number;
let getDecodedPlanePtr: (ctx: number, plane: number) => number;
let getDecodedChannels: (ctx: number) => number;
let getDecodedSampleRate: (ctx: number) => number;
let getDecodedSampleCount: (ctx: number) => number;
let getDecodedPts: (ctx: number) => number;
let getDecodedPts: (ctx: number) => bigint;
let flushDecoderFn: (ctx: number) => void;
let closeDecoderFn: (ctx: number) => void;
let initEncoderFn: (codecId: number, channels: number, sampleRate: number, bitrate: number) => number;
let getEncoderFrameSize: (ctx: number) => number;
let getEncodeInputPtr: (ctx: number, size: number) => number;
let encodeFrameFn: (ctx: number, pts: number) => number;
let encodeFrameFn: (ctx: number, pts: bigint) => number;
let flushEncoderFn: (ctx: number) => void;
let getEncodedData: (ctx: number) => number;
let getEncodedPts: (ctx: number) => number;
let getEncodedPts: (ctx: number) => bigint;
let getEncodedDuration: (ctx: number) => number;
let closeEncoderFn: (ctx: number) => void;
@@ -53,23 +53,23 @@ const ensureModule = async () => {
initDecoderFn = module.cwrap('init_decoder', 'number', ['number']);
configureDecodePacket = module.cwrap('configure_decode_packet', 'number', ['number', 'number']);
decodePacket = module.cwrap('decode_packet', 'number', ['number', 'number']);
decodePacket = module.cwrap('decode_packet', 'number', ['number', 'number']) as unknown as typeof decodePacket;
getDecodedFormat = module.cwrap('get_decoded_format', 'number', ['number']);
getDecodedPlanePtr = module.cwrap('get_decoded_plane_ptr', 'number', ['number', 'number']);
getDecodedChannels = module.cwrap('get_decoded_channels', 'number', ['number']);
getDecodedSampleRate = module.cwrap('get_decoded_sample_rate', 'number', ['number']);
getDecodedSampleCount = module.cwrap('get_decoded_sample_count', 'number', ['number']);
getDecodedPts = module.cwrap('get_decoded_pts', 'number', ['number']);
getDecodedPts = module.cwrap('get_decoded_pts', 'number', ['number']) as unknown as typeof getDecodedPts;
flushDecoderFn = module.cwrap('flush_decoder', null, ['number']);
closeDecoderFn = module.cwrap('close_decoder', null, ['number']);
initEncoderFn = module.cwrap('init_encoder', 'number', ['number', 'number', 'number', 'number']);
getEncoderFrameSize = module.cwrap('get_encoder_frame_size', 'number', ['number']);
getEncodeInputPtr = module.cwrap('get_encode_input_ptr', 'number', ['number', 'number']);
encodeFrameFn = module.cwrap('encode_frame', 'number', ['number', 'number']);
encodeFrameFn = module.cwrap('encode_frame', 'number', ['number', 'number']) as unknown as typeof encodeFrameFn;
flushEncoderFn = module.cwrap('flush_encoder', null, ['number']);
getEncodedData = module.cwrap('get_encoded_data', 'number', ['number']);
getEncodedPts = module.cwrap('get_encoded_pts', 'number', ['number']);
getEncodedPts = module.cwrap('get_encoded_pts', 'number', ['number']) as unknown as typeof getEncodedPts;
getEncodedDuration = module.cwrap('get_encoded_duration', 'number', ['number']);
closeEncoderFn = module.cwrap('close_encoder', null, ['number']);
}
@@ -108,7 +108,7 @@ const decode = (ctx: number, encodedData: ArrayBuffer, timestamp: number) => {
module.HEAPU8.set(bytes, dataPtr);
const ret = decodePacket(ctx, timestamp);
const ret = decodePacket(ctx, BigInt(timestamp));
if (ret < 0) {
throw new Error(`Decode failed with error code ${ret}.`);
}
@@ -122,7 +122,7 @@ const decode = (ctx: number, encodedData: ArrayBuffer, timestamp: number) => {
const channels = getDecodedChannels(ctx);
const sampleRate = getDecodedSampleRate(ctx);
const sampleCount = getDecodedSampleCount(ctx);
const pts = getDecodedPts(ctx);
const pts = Number(getDecodedPts(ctx));
let pcmData: ArrayBuffer;
if (info.planar) {
@@ -169,14 +169,14 @@ const encode = (ctx: number, audioData: ArrayBuffer, timestamp: number) => {
}
module.HEAPU8.set(audioBytes, inputPtr);
const bytesWritten = encodeFrameFn(ctx, timestamp);
const bytesWritten = encodeFrameFn(ctx, BigInt(timestamp));
if (bytesWritten < 0) {
throw new Error(`Encode failed with error code ${bytesWritten}.`);
}
const ptr = getEncodedData(ctx);
const encodedData = module.HEAPU8.slice(ptr, ptr + bytesWritten).buffer;
const pts = getEncodedPts(ctx);
const pts = Number(getEncodedPts(ctx));
const duration = getEncodedDuration(ctx);
return { encodedData, pts, duration };
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@mediabunny/flac-encoder",
"author": "Vanilagy",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"description": "FLAC encoder extension for Mediabunny, based on libFLAC.",
"main": "./dist/bundles/mediabunny-flac-encoder.mjs",
"module": "./dist/bundles/mediabunny-flac-encoder.mjs",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@mediabunny/mp3-encoder",
"author": "Vanilagy",
"version": "1.42.0-beta.7",
"version": "1.42.0-beta.9",
"description": "MP3 encoder extension for Mediabunny, based on LAME.",
"main": "./dist/bundles/mediabunny-mp3-encoder.mjs",
"module": "./dist/bundles/mediabunny-mp3-encoder.mjs",
+2
View File
@@ -16,6 +16,7 @@ const createVariants = async (
entryPoints: [entryPoint],
bundle: true,
logLevel: 'info',
target: 'es2021',
logOverride: {
'import-is-undefined': 'silent', // Warning caused by the disabled "node.ts" import
},
@@ -29,6 +30,7 @@ const createVariants = async (
*/`,
},
legalComments: 'none',
platform: 'node',
};
const umdConfig: esbuild.BuildOptions = {
+3 -3
View File
@@ -338,11 +338,11 @@ const generateDocs = (entryFiles: string[], apiConfigFile: string, dry = false)
if (linkText) {
// If custom link text is provided, always use it.
displayText = linkText.trim();
} else if (memberName) {
// If it's a member link, default the text to just the member name.
} else if (memberName && typeName === currentTypeName) {
// Member link on the current type: just the member name.
displayText = `\`${memberName}\``;
} else {
// Otherwise, it's a type link, so use the full type name.
// Type link, or member link on another type: use the full target.
displayText = `\`${cleanTarget}\``;
}
+1 -1
View File
@@ -57,7 +57,7 @@ export class AttributeList {
}
if (key) {
this._attributes[key.toLowerCase()] = value;
this._attributes[key.trim().toLowerCase()] = value;
}
}
+2 -1
View File
@@ -76,8 +76,9 @@ export {
EncodedAudioPacketSource,
EncodedVideoPacketSource,
MediaStreamAudioTrackSource,
MediaStreamVideoTrackSourceOptions,
MediaStreamAudioTrackSourceOptions,
MediaStreamVideoTrackSource,
MediaStreamVideoTrackSourceOptions,
TextSubtitleSource,
VideoSampleSource,
} from './media-source';
+102 -16
View File
@@ -1332,7 +1332,7 @@ export class CanvasSource extends VideoSource {
}
/**
* Options for MediaStreamVideoTrackSource.
* Options for {@link MediaStreamVideoTrackSource}.
* @group Media sources
* @public
*/
@@ -1344,6 +1344,21 @@ export type MediaStreamVideoTrackSourceOptions = {
* lead to wildly irregular FPS.
*/
frameRate?: number | null;
/**
* Controls the basis (zero point) for video frame timestamps.
*
* When set to `'synced-zero'`, timestamps will be relative to the first chunk of media from a `MediaStreamTrack`
* added to the {@link Output}.
*
* When set to `'zero'`, timestamps will be relative to the first video frame emitted by this source.
*
* When set to `'unix'`, timestamps will be relative to the Unix epoch, so clearly associated with a distinct point
* in time. Here, pausing via {@link MediaStreamVideoTrackSource.pause} will also create gaps in timestamps. Be sure
* to pair this mode with {@link BaseTrackMetadata.isRelativeToUnixEpoch}.
*
* Defaults to `'synced-zero'`.
*/
timestampBase?: 'synced-zero' | 'zero' | 'unix';
};
/**
@@ -1412,6 +1427,16 @@ export class MediaStreamVideoTrackSource extends VideoSource {
if (options.frameRate != null && (typeof options.frameRate !== 'number' || options.frameRate <= 0)) {
throw new TypeError('options.frameRate, when provided, must be either a positive number or null.');
}
if (
options.timestampBase !== undefined
&& options.timestampBase !== 'synced-zero'
&& options.timestampBase !== 'zero'
&& options.timestampBase !== 'unix'
) {
throw new TypeError(
'options.timestampBase, when provided, must be one of \'synced-zero\', \'zero\', or \'unix\'.',
);
}
encodingConfig = {
...encodingConfig,
@@ -1508,7 +1533,7 @@ export class MediaStreamVideoTrackSource extends VideoSource {
if (this._paused) {
const frameSeen = firstVideoFrameTimestamp !== null;
if (frameSeen) {
if (lastSampleTimestamp !== null) {
if (lastSampleTimestamp !== null && this._options.timestampBase !== 'unix') {
// In addition to dropping this frame, let's also keep track of the time we have lost due to the
// pause. Doing it like this instead of simply keeping track of the paused time is better since
// it retains the frame rate of the underlying source.
@@ -1527,14 +1552,23 @@ export class MediaStreamVideoTrackSource extends VideoSource {
if (firstVideoFrameTimestamp === null) {
firstVideoFrameTimestamp = currentTimestamp;
const muxer = this._connectedTrack!.output._muxer;
if (muxer.firstMediaStreamTimestamp === null) {
muxer.firstMediaStreamTimestamp = now / 1000;
this._timestampOffset = -firstVideoFrameTimestamp;
let target: number;
const timestampBase = this._options.timestampBase ?? 'synced-zero';
if (timestampBase === 'unix') {
target = Date.now() / 1000;
} else if (timestampBase === 'zero') {
target = 0;
} else {
this._timestampOffset = (now / 1000 - muxer.firstMediaStreamTimestamp)
- firstVideoFrameTimestamp;
const output = this._connectedTrack!.output;
if (output._firstMediaStreamTimestamp === null) {
output._firstMediaStreamTimestamp = now / 1000;
target = 0;
} else {
target = now / 1000 - output._firstMediaStreamTimestamp;
}
}
this._timestampOffset = target - firstVideoFrameTimestamp;
}
lastSampleTimestamp = currentTimestamp;
@@ -2405,6 +2439,29 @@ export class AudioBufferSource extends AudioSource {
}
}
/**
* Options for {@link MediaStreamAudioTrackSource}.
* @group Media sources
* @public
*/
export type MediaStreamAudioTrackSourceOptions = {
/**
* Controls the basis (zero point) for audio sample timestamps.
*
* When set to `'synced-zero'`, timestamps will be relative to the first chunk of media from a `MediaStreamTrack`
* added to the {@link Output}.
*
* When set to `'zero'`, timestamps will be relative to the first audio sample emitted by this source.
*
* When set to `'unix'`, timestamps will be relative to the Unix epoch, so clearly associated with a distinct point
* in time. Here, pausing via {@link MediaStreamAudioTrackSource.pause} will also create gaps in timestamps. Be sure
* to pair this mode with {@link BaseTrackMetadata.isRelativeToUnixEpoch}.
*
* Defaults to `'synced-zero'`.
*/
timestampBase?: 'synced-zero' | 'zero' | 'unix';
};
/**
* Audio source that encodes the data of a
* [`MediaStreamAudioTrack`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack) and pipes it into the
@@ -2415,6 +2472,8 @@ export class AudioBufferSource extends AudioSource {
* @public
*/
export class MediaStreamAudioTrackSource extends AudioSource {
/** @internal */
private _options: MediaStreamAudioTrackSourceOptions;
/** @internal */
private _encoder: AudioEncoderWrapper;
/** @internal */
@@ -2448,13 +2507,31 @@ export class MediaStreamAudioTrackSource extends AudioSource {
* Creates a new {@link MediaStreamAudioTrackSource} from a `MediaStreamAudioTrack`, which will pull audio samples
* from the stream in real time and encode them according to {@link AudioEncodingConfig}.
*/
constructor(track: MediaStreamAudioTrack, encodingConfig: AudioEncodingConfig) {
constructor(
track: MediaStreamAudioTrack,
encodingConfig: AudioEncodingConfig,
options: MediaStreamAudioTrackSourceOptions = {},
) {
if (!(track instanceof MediaStreamTrack) || track.kind !== 'audio') {
throw new TypeError('track must be an audio MediaStreamTrack.');
}
validateAudioEncodingConfig(encodingConfig);
if (typeof options !== 'object' || !options) {
throw new TypeError('options must be an object.');
}
if (
options.timestampBase !== undefined
&& options.timestampBase !== 'synced-zero'
&& options.timestampBase !== 'zero'
&& options.timestampBase !== 'unix'
) {
throw new TypeError(
'options.timestampBase, when provided, must be one of \'synced-zero\', \'zero\', or \'unix\'.',
);
}
super(encodingConfig.codec);
this._options = options;
this._encoder = new AudioEncoderWrapper(this, encodingConfig);
this._track = track;
}
@@ -2486,7 +2563,7 @@ export class MediaStreamAudioTrackSource extends AudioSource {
if (this._paused) {
const dataSeen = firstAudioDataTimestamp !== null;
if (dataSeen) {
if (lastSampleTimestamp !== null) {
if (lastSampleTimestamp !== null && this._options.timestampBase !== 'unix') {
// In addition to dropping this sample, let's also keep track of the time we have lost due to
// the pause. Doing it like this instead of simply keeping track of the paused time is better
// since it retains the sample rate of the underlying source.
@@ -2505,14 +2582,23 @@ export class MediaStreamAudioTrackSource extends AudioSource {
if (firstAudioDataTimestamp === null) {
firstAudioDataTimestamp = audioSample.timestamp;
const muxer = this._connectedTrack!.output._muxer;
if (muxer.firstMediaStreamTimestamp === null) {
muxer.firstMediaStreamTimestamp = performance.now() / 1000;
this._timestampOffset = -firstAudioDataTimestamp;
let target: number;
const timestampBase = this._options.timestampBase ?? 'synced-zero';
if (timestampBase === 'unix') {
target = Date.now() / 1000;
} else if (timestampBase === 'zero') {
target = 0;
} else {
this._timestampOffset = (performance.now() / 1000 - muxer.firstMediaStreamTimestamp)
- firstAudioDataTimestamp;
const output = this._connectedTrack!.output;
if (output._firstMediaStreamTimestamp === null) {
output._firstMediaStreamTimestamp = performance.now() / 1000;
target = 0;
} else {
target = performance.now() / 1000 - output._firstMediaStreamTimestamp;
}
}
this._timestampOffset = target - firstAudioDataTimestamp;
}
lastSampleTimestamp = currentTimestamp;
-7
View File
@@ -15,13 +15,6 @@ export abstract class Muxer {
output: Output;
mutex = new AsyncMutex();
/**
* This field is used to synchronize multiple MediaStreamTracks. They use the same time coordinate system across
* tracks, and to ensure correct audio-video sync, we must use the same offset for all of them. The reason an offset
* is needed at all is because the timestamps typically don't start at zero.
*/
firstMediaStreamTimestamp: number | null = null;
constructor(output: Output) {
this.output = output;
}
+2 -1
View File
@@ -8,4 +8,5 @@
// This file contains Node.js-specific code that does not run in a browser.
export * as fs from 'node:fs/promises';
// Dynamic import so it can be included in the bundles and still work properly in the browser
export const getFs = () => import('node:fs/promises');
+7
View File
@@ -397,6 +397,13 @@ export class Output<
_rootTarget: T | null = null;
/** @internal */
_rootTargetPromise: Promise<T> | null = null;
/**
* This field is used to synchronize multiple MediaStreamTracks. They use the same time coordinate system across
* tracks, and to ensure correct audio-video sync, we must use the same offset for all of them. The reason an offset
* is needed at all is because the timestamps typically don't start at zero.
* @internal
*/
_firstMediaStreamTimestamp: number | null = null;
/**
* The target to which the root file will be written. Throws when using {@link PathedTarget} with an async callback;
+6 -3
View File
@@ -959,7 +959,7 @@ export class FilePathSource extends PathedSource {
throw new TypeError('options.maxCacheSize, when provided, must be a non-negative number.');
}
if (!node.fs) {
if (!node.getFs) {
throw new Error(
'FilePathSource is only available in server-side environments (Node.js, Bun, Deno).',
);
@@ -970,7 +970,7 @@ export class FilePathSource extends PathedSource {
// Let's back this source with a StreamSource, makes the implementation very simple
this._streamSource = new StreamSource({
getSize: async () => {
this._fileHandle = await node.fs.open(filePath, 'r');
this._fileHandle = await (await node.getFs()).open(filePath, 'r');
const stats = await this._fileHandle.stat();
return stats.size;
@@ -1927,7 +1927,10 @@ class ReadOrchestrator {
}
})
.finally(() => {
assert(!worker.running);
if (worker.running) {
// Rare, but can happen with multiple concurrent reads. In this case, don't do anything.
return;
}
if (this.queuedReads.length > 0) {
let oldestIndex = 0;
+7 -1
View File
@@ -692,12 +692,18 @@ export class FilePathTarget extends Target {
throw new TypeError('options must be an object.');
}
if (!node.getFs) {
throw new Error(
'FilePathTarget is only available in server-side environments (Node.js, Bun, Deno).',
);
}
super();
// Let's back this target with a StreamTarget, makes the implementation very simple
const writable = new WritableStream<StreamTargetChunk>({
start: async () => {
this._fileHandle = await node.fs.open(filePath, 'w');
this._fileHandle = await (await node.getFs()).open(filePath, 'w');
},
write: async (chunk) => {
assert(this._fileHandle);
+42
View File
@@ -10,6 +10,7 @@ import { EncodedPacketSink } from '../../src/media-sink.js';
import { Mp4OutputFormat } from '../../src/output-format.js';
import { AudioSample } from '../../src/sample.js';
import { registerAacEncoder } from '@mediabunny/aac-encoder';
import { assert } from '../../src/misc.js';
const createSineWave = (sampleRate: number, channels: number, durationSeconds: number) => {
const totalFrames = sampleRate * durationSeconds;
@@ -80,3 +81,44 @@ test('AAC encoding', async () => {
expect(await track.computeDuration()).toBeCloseTo(2, 1);
});
test('AAC with huge timestamps', async () => {
registerAacEncoder();
const sampleRate = 48000;
const channels = 2;
const timestamp = 1e9;
const durationSeconds = 2;
const data = createSineWave(sampleRate, channels, durationSeconds);
const output = new Output({
format: new Mp4OutputFormat({ fastStart: 'fragmented' }),
target: new BufferTarget(),
});
const audioSource = new AudioSampleSource({ codec: 'aac', bitrate: 128000 });
output.addAudioTrack(audioSource);
await output.start();
await audioSource.add(new AudioSample({
data,
format: 'f32',
numberOfChannels: channels,
sampleRate,
timestamp,
}));
audioSource.close();
await output.finalize();
using input = new Input({
source: new BufferSource(output.target.buffer!),
formats: ALL_FORMATS,
});
const track = (await input.getPrimaryAudioTrack())!;
const sink = new EncodedPacketSink(track);
const firstPacket = await sink.getFirstPacket();
assert(firstPacket);
expect(firstPacket.timestamp).toBe(timestamp);
});
+99
View File
@@ -14,6 +14,7 @@ import { AudioSampleSource } from '../../src/media-source.js';
import { Mp4OutputFormat } from '../../src/output-format.js';
import { AudioSample } from '../../src/sample.js';
import { registerAc3Decoder, registerAc3Encoder } from '@mediabunny/ac3';
import { assert } from '../../src/misc.js';
const __dirname = new URL('.', import.meta.url).pathname;
@@ -329,3 +330,101 @@ test('E-AC-3 encoding', async () => {
expect(await track.computeDuration()).toBeCloseTo(2, 1);
});
test('AC-3 with huge timestamps', async () => {
registerAc3Decoder();
registerAc3Encoder();
const sampleRate = 48000;
const channels = 2;
const timestamp = 1e9;
const durationSeconds = 2;
const data = createSineWave(sampleRate, channels, durationSeconds);
const output = new Output({
format: new Mp4OutputFormat({ fastStart: 'fragmented' }),
target: new BufferTarget(),
});
const audioSource = new AudioSampleSource({ codec: 'ac3', bitrate: 192000 });
output.addAudioTrack(audioSource);
await output.start();
await audioSource.add(new AudioSample({
data,
format: 'f32',
numberOfChannels: channels,
sampleRate,
timestamp,
}));
audioSource.close();
await output.finalize();
using input = new Input({
source: new BufferSource(output.target.buffer!),
formats: ALL_FORMATS,
});
const track = (await input.getPrimaryAudioTrack())!;
const packetSink = new EncodedPacketSink(track);
const firstPacket = await packetSink.getFirstPacket();
assert(firstPacket);
expect(firstPacket.timestamp).toBe(timestamp);
const sampleSink = new AudioSampleSink(track);
const iterator = sampleSink.samples(timestamp);
const firstSample = (await iterator.next()).value;
assert(firstSample);
expect(firstSample.timestamp).toBe(timestamp);
});
test('E-AC-3 with huge timestamps', async () => {
registerAc3Decoder();
registerAc3Encoder();
const sampleRate = 48000;
const channels = 2;
const timestamp = 1e9;
const durationSeconds = 2;
const data = createSineWave(sampleRate, channels, durationSeconds);
const output = new Output({
format: new Mp4OutputFormat({ fastStart: 'fragmented' }),
target: new BufferTarget(),
});
const audioSource = new AudioSampleSource({ codec: 'eac3', bitrate: 192000 });
output.addAudioTrack(audioSource);
await output.start();
await audioSource.add(new AudioSample({
data,
format: 'f32',
numberOfChannels: channels,
sampleRate,
timestamp,
}));
audioSource.close();
await output.finalize();
using input = new Input({
source: new BufferSource(output.target.buffer!),
formats: ALL_FORMATS,
});
const track = (await input.getPrimaryAudioTrack())!;
const packetSink = new EncodedPacketSink(track);
const firstPacket = await packetSink.getFirstPacket();
assert(firstPacket);
expect(firstPacket.timestamp).toBe(timestamp);
const sampleSink = new AudioSampleSink(track);
const iterator = sampleSink.samples(timestamp);
const firstSample = (await iterator.next()).value;
assert(firstSample);
expect(firstSample.timestamp).toBe(timestamp);
});
+43 -1
View File
@@ -7,9 +7,10 @@ import { BufferTarget } from '../../src/target.js';
import { canEncode } from '../../src/encode.js';
import { AudioSampleSource } from '../../src/media-source.js';
import { EncodedPacketSink } from '../../src/media-sink.js';
import { FlacOutputFormat } from '../../src/output-format.js';
import { FlacOutputFormat, Mp4OutputFormat } from '../../src/output-format.js';
import { AudioSample } from '../../src/sample.js';
import { registerFlacEncoder } from '@mediabunny/flac-encoder';
import { assert } from '../../src/misc.js';
const createSineWave = (sampleRate: number, channels: number, durationSeconds: number) => {
const totalFrames = sampleRate * durationSeconds;
@@ -81,3 +82,44 @@ test('FLAC encoding', async () => {
expect(await track.computeDuration()).toBeCloseTo(2, 1);
});
test('FLAC with huge timestamps', async () => {
registerFlacEncoder();
const sampleRate = 48000;
const channels = 2;
const timestamp = 1e9;
const durationSeconds = 2;
const data = createSineWave(sampleRate, channels, durationSeconds);
const output = new Output({
format: new Mp4OutputFormat({ fastStart: 'fragmented' }),
target: new BufferTarget(),
});
const audioSource = new AudioSampleSource({ codec: 'flac', bitrate: 1 });
output.addAudioTrack(audioSource);
await output.start();
await audioSource.add(new AudioSample({
data,
format: 'f32',
numberOfChannels: channels,
sampleRate,
timestamp,
}));
audioSource.close();
await output.finalize();
using input = new Input({
source: new BufferSource(output.target.buffer!),
formats: ALL_FORMATS,
});
const track = (await input.getPrimaryAudioTrack())!;
const sink = new EncodedPacketSink(track);
const firstPacket = await sink.getFirstPacket();
assert(firstPacket);
expect(firstPacket.timestamp).toBe(timestamp);
});
+43 -1
View File
@@ -7,9 +7,10 @@ import { BufferTarget } from '../../src/target.js';
import { canEncode } from '../../src/encode.js';
import { AudioSampleSource } from '../../src/media-source.js';
import { EncodedPacketSink } from '../../src/media-sink.js';
import { Mp3OutputFormat } from '../../src/output-format.js';
import { Mp3OutputFormat, Mp4OutputFormat } from '../../src/output-format.js';
import { AudioSample } from '../../src/sample.js';
import { registerMp3Encoder } from '@mediabunny/mp3-encoder';
import { assert } from '../../src/misc.js';
const createSineWave = (sampleRate: number, channels: number, durationSeconds: number) => {
const totalFrames = sampleRate * durationSeconds;
@@ -81,3 +82,44 @@ test('MP3 encoding', async () => {
expect(await track.computeDuration()).toBeCloseTo(2, 0);
});
test('MP3 with huge timestamps', async () => {
registerMp3Encoder();
const sampleRate = 44100;
const channels = 2;
const timestamp = 1e9;
const durationSeconds = 2;
const data = createSineWave(sampleRate, channels, durationSeconds);
const output = new Output({
format: new Mp4OutputFormat({ fastStart: 'fragmented' }),
target: new BufferTarget(),
});
const audioSource = new AudioSampleSource({ codec: 'mp3', bitrate: 128_000 });
output.addAudioTrack(audioSource);
await output.start();
await audioSource.add(new AudioSample({
data,
format: 'f32',
numberOfChannels: channels,
sampleRate,
timestamp,
}));
audioSource.close();
await output.finalize();
using input = new Input({
source: new BufferSource(output.target.buffer!),
formats: ALL_FORMATS,
});
const track = (await input.getPrimaryAudioTrack())!;
const sink = new EncodedPacketSink(track);
const firstPacket = await sink.getFirstPacket();
assert(firstPacket);
expect(firstPacket.timestamp).toBe(timestamp);
});
-133
View File
@@ -1,133 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:11
#EXTINF:10.000,
url_462/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_463/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_464/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_465/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_466/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_467/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_468/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:9.950,
url_469/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.050,
url_470/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_471/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_472/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_473/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_474/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_475/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_476/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_477/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_478/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_479/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_480/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_481/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_482/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_483/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_484/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_485/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_486/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_487/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_488/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_489/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_490/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:9.950,
url_491/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.050,
url_492/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_493/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_494/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_495/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_496/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_497/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_498/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_499/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_500/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_501/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_502/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_503/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_504/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:9.950,
url_505/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.050,
url_506/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_507/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_508/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_509/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_510/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_511/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_512/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_513/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_514/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_515/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_516/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_517/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_518/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_519/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_520/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_521/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_522/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_523/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:10.000,
url_524/193039199_mp4_h264_aac_hd_7.ts
#EXTINF:4.584,
url_525/193039199_mp4_h264_aac_hd_7.ts
#EXT-X-ENDLIST
-152
View File
@@ -1,152 +0,0 @@
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a1",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="a1/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a2",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="6",URI="a2/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a3",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="6",URI="a3/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS,GROUP-ID="cc",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,INSTREAM-ID="CC1"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="sub1",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,FORCED=NO,URI="s1/en/prog_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=928091,BANDWIDTH=1015727,CODECS="avc1.640028",RESOLUTION=1920x1080,URI="tp5/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=731514,BANDWIDTH=760174,CODECS="avc1.64001f",RESOLUTION=1280x720,URI="tp4/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=509153,BANDWIDTH=520162,CODECS="avc1.64001f",RESOLUTION=960x540,URI="tp3/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=176942,BANDWIDTH=186651,CODECS="avc1.64001f",RESOLUTION=640x360,URI="tp2/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=90796,BANDWIDTH=95410,CODECS="avc1.64001f",RESOLUTION=480x270,URI="tp1/iframe_index.m3u8"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2190673,BANDWIDTH=2523597,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v5/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8052613,BANDWIDTH=9873268,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v9/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6133114,BANDWIDTH=7318337,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v8/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4681537,BANDWIDTH=5421720,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v7/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3183969,BANDWIDTH=3611257,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v6/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1277747,BANDWIDTH=1475903,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v4/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=890848,BANDWIDTH=1017705,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v3/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=533420,BANDWIDTH=582820,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v2/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=303898,BANDWIDTH=339404,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v1/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2413172,BANDWIDTH=2746096,CODECS="avc1.640020,ac-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v5/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8275112,BANDWIDTH=10095767,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v9/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6355613,BANDWIDTH=7540836,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v8/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4904036,BANDWIDTH=5644219,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v7/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3406468,BANDWIDTH=3833756,CODECS="avc1.640020,ac-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v6/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1500246,BANDWIDTH=1698402,CODECS="avc1.64001f,ac-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v4/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1113347,BANDWIDTH=1240204,CODECS="avc1.64001f,ac-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v3/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=755919,BANDWIDTH=805319,CODECS="avc1.64001f,ac-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v2/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=526397,BANDWIDTH=561903,CODECS="avc1.64001f,ac-3",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v1/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2221172,BANDWIDTH=2554096,CODECS="avc1.640020,ec-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v5/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8083112,BANDWIDTH=9903767,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v9/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6163613,BANDWIDTH=7348836,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v8/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4712036,BANDWIDTH=5452219,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v7/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3214468,BANDWIDTH=3641756,CODECS="avc1.640020,ec-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v6/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1308246,BANDWIDTH=1506402,CODECS="avc1.64001f,ec-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v4/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=921347,BANDWIDTH=1048204,CODECS="avc1.64001f,ec-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v3/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=563919,BANDWIDTH=613319,CODECS="avc1.64001f,ec-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v2/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=334397,BANDWIDTH=369903,CODECS="avc1.64001f,ec-3",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v1/prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=287207,BANDWIDTH=328352,CODECS="hvc1.2.4.L123.B0",RESOLUTION=1920x1080,URI="tp10/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=216605,BANDWIDTH=226274,CODECS="hvc1.2.4.L123.B0",RESOLUTION=1280x720,URI="tp9/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=154000,BANDWIDTH=159037,CODECS="hvc1.2.4.L123.B0",RESOLUTION=960x540,URI="tp8/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=90882,BANDWIDTH=92800,CODECS="hvc1.2.4.L123.B0",RESOLUTION=640x360,URI="tp7/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=50569,BANDWIDTH=51760,CODECS="hvc1.2.4.L123.B0",RESOLUTION=480x270,URI="tp6/iframe_index.m3u8"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1966314,BANDWIDTH=2164328,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v14/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6105163,BANDWIDTH=6664228,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v18/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4801073,BANDWIDTH=5427899,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v17/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3441312,BANDWIDTH=4079770,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v16/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2635933,BANDWIDTH=2764701,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v15/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1138612,BANDWIDTH=1226255,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v13/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=829339,BANDWIDTH=901770,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v12/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=522229,BANDWIDTH=548927,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v11/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=314941,BANDWIDTH=340713,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v10/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2188813,BANDWIDTH=2386827,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v14/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6327662,BANDWIDTH=6886727,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v18/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=5023572,BANDWIDTH=5650398,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v17/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3663811,BANDWIDTH=4302269,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v16/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2858432,BANDWIDTH=2987200,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v15/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1361111,BANDWIDTH=1448754,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v13/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1051838,BANDWIDTH=1124269,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v12/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=744728,BANDWIDTH=771426,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v11/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=537440,BANDWIDTH=563212,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v10/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1996813,BANDWIDTH=2194827,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v14/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6135662,BANDWIDTH=6694727,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v18/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4831572,BANDWIDTH=5458398,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v17/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3471811,BANDWIDTH=4110269,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v16/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2666432,BANDWIDTH=2795200,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v15/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1169111,BANDWIDTH=1256754,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v13/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=859838,BANDWIDTH=932269,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v12/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=552728,BANDWIDTH=579426,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v11/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=345440,BANDWIDTH=371212,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v10/prog_index.m3u8
-15
View File
@@ -1,15 +0,0 @@
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2149280,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=1280x720,NAME="720"
url_0/193039199_mp4_h264_aac_hd_7.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=246440,CODECS="mp4a.40.5,avc1.42000d",RESOLUTION=320x184,NAME="240"
url_2/193039199_mp4_h264_aac_ld_7.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=460560,CODECS="mp4a.40.5,avc1.420016",RESOLUTION=512x288,NAME="380"
url_4/193039199_mp4_h264_aac_7.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=836280,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=848x480,NAME="480"
url_6/193039199_mp4_h264_aac_hq_7.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=6221600,CODECS="mp4a.40.2,avc1.640028",RESOLUTION=1920x1080,NAME="1080"
url_8/193039199_mp4_h264_aac_fhd_7.m3u8
https://test-streams.mux.dev/x36xhzz/url_0/193039199_mp4_h264_aac_hd_7.m3u8
-9
View File
@@ -1,9 +0,0 @@
#EXTM3U
## Archived from https://player.webvideocore.net/CL1olYogIrDWvwqiIKK7eLBkzvO18gwo9ERMzsyXzwt_t-ya8ygf2kQBZww38JJT/8i4vvznv8408.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=759977, RESOLUTION=1280x720
mp3-in-ts-level/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=759977, RESOLUTION=1280x720
mp3-in-ts-level/index.m3u8
-109
View File
@@ -1,109 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
media_w905519204_0.mp3
#EXTINF:10.0,
media_w905519204_1.mp3
#EXTINF:10.0,
media_w905519204_2.mp3
#EXTINF:10.0,
media_w905519204_3.mp3
#EXTINF:10.0,
media_w905519204_4.mp3
#EXTINF:10.0,
media_w905519204_5.mp3
#EXTINF:10.0,
media_w905519204_6.mp3
#EXTINF:10.0,
media_w905519204_7.mp3
#EXTINF:10.0,
media_w905519204_8.mp3
#EXTINF:10.0,
media_w905519204_9.mp3
#EXTINF:10.0,
media_w905519204_10.mp3
#EXTINF:10.0,
media_w905519204_11.mp3
#EXTINF:10.0,
media_w905519204_12.mp3
#EXTINF:10.0,
media_w905519204_13.mp3
#EXTINF:10.0,
media_w905519204_14.mp3
#EXTINF:10.0,
media_w905519204_15.mp3
#EXTINF:10.0,
media_w905519204_16.mp3
#EXTINF:10.0,
media_w905519204_17.mp3
#EXTINF:10.0,
media_w905519204_18.mp3
#EXTINF:10.0,
media_w905519204_19.mp3
#EXTINF:10.0,
media_w905519204_20.mp3
#EXTINF:10.0,
media_w905519204_21.mp3
#EXTINF:10.0,
media_w905519204_22.mp3
#EXTINF:10.0,
media_w905519204_23.mp3
#EXTINF:10.0,
media_w905519204_24.mp3
#EXTINF:10.0,
media_w905519204_25.mp3
#EXTINF:10.0,
media_w905519204_26.mp3
#EXTINF:10.0,
media_w905519204_27.mp3
#EXTINF:10.0,
media_w905519204_28.mp3
#EXTINF:10.0,
media_w905519204_29.mp3
#EXTINF:10.0,
media_w905519204_30.mp3
#EXTINF:10.0,
media_w905519204_31.mp3
#EXTINF:10.0,
media_w905519204_32.mp3
#EXTINF:10.0,
media_w905519204_33.mp3
#EXTINF:10.0,
media_w905519204_34.mp3
#EXTINF:10.0,
media_w905519204_35.mp3
#EXTINF:10.0,
media_w905519204_36.mp3
#EXTINF:10.0,
media_w905519204_37.mp3
#EXTINF:10.0,
media_w905519204_38.mp3
#EXTINF:10.0,
media_w905519204_39.mp3
#EXTINF:10.0,
media_w905519204_40.mp3
#EXTINF:10.0,
media_w905519204_41.mp3
#EXTINF:10.0,
media_w905519204_42.mp3
#EXTINF:10.0,
media_w905519204_43.mp3
#EXTINF:10.0,
media_w905519204_44.mp3
#EXTINF:10.0,
media_w905519204_45.mp3
#EXTINF:10.0,
media_w905519204_46.mp3
#EXTINF:10.0,
media_w905519204_47.mp3
#EXTINF:10.0,
media_w905519204_48.mp3
#EXTINF:10.0,
media_w905519204_49.mp3
#EXTINF:10.0,
media_w905519204_50.mp3
#EXTINF:6.833,
media_w905519204_51.mp3
#EXT-X-ENDLIST
-4
View File
@@ -1,4 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=63701,CODECS="mp4a.40.34"
chunklist_w905519204.m3u8
Binary file not shown.
Binary file not shown.
Binary file not shown.
-37
View File
@@ -1,37 +0,0 @@
#EXTM3U
#EXT-X-VERSION:6
## Generated with https://github.com/google/shaka-packager version v2.3.0-5bf8ad5-release
#EXT-X-TARGETDURATION:5
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="v-0576p-1400k-libx264-init.mp4"
#EXTINF:4.000,
v-0576p-1400k-libx264-s1.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s2.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s3.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s4.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s5.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s6.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s7.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s8.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s9.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s10.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s11.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s12.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s13.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s14.mp4
#EXTINF:4.000,
v-0576p-1400k-libx264-s15.mp4
#EXT-X-ENDLIST
-25
View File
@@ -1,25 +0,0 @@
#EXTM3U
## Generated with https://github.com/google/shaka-packager version v2.3.0-5bf8ad5-release
#EXT-X-MEDIA:TYPE=AUDIO,URI="playlist_a-eng-0128k-aac-2c.mp4.m3u8",GROUP-ID="default-audio-group",LANGUAGE="en",NAME="stream_5",DEFAULT=YES,AUTOSELECT=YES,CHANNELS="2"
#EXT-X-MEDIA:TYPE=AUDIO,URI="playlist_a-deu-0128k-aac-2c.mp4.m3u8",GROUP-ID="default-audio-group",LANGUAGE="de",NAME="stream_4",AUTOSELECT=YES,CHANNELS="2"
#EXT-X-MEDIA:TYPE=AUDIO,URI="playlist_a-ita-0128k-aac-2c.mp4.m3u8",GROUP-ID="default-audio-group",LANGUAGE="it",NAME="stream_8",AUTOSELECT=YES,CHANNELS="2"
#EXT-X-MEDIA:TYPE=AUDIO,URI="playlist_a-fra-0128k-aac-2c.mp4.m3u8",GROUP-ID="default-audio-group",LANGUAGE="fr",NAME="stream_7",AUTOSELECT=YES,CHANNELS="2"
#EXT-X-MEDIA:TYPE=AUDIO,URI="playlist_a-spa-0128k-aac-2c.mp4.m3u8",GROUP-ID="default-audio-group",LANGUAGE="es",NAME="stream_9",AUTOSELECT=YES,CHANNELS="2"
#EXT-X-MEDIA:TYPE=AUDIO,URI="playlist_a-eng-0384k-aac-6c.mp4.m3u8",GROUP-ID="default-audio-group",LANGUAGE="en",NAME="stream_6",CHANNELS="6"
#EXT-X-MEDIA:TYPE=SUBTITLES,URI="playlist_s-en.webvtt.m3u8",GROUP-ID="default-text-group",LANGUAGE="en",NAME="stream_0",DEFAULT=YES,AUTOSELECT=YES
#EXT-X-MEDIA:TYPE=SUBTITLES,URI="playlist_s-el.webvtt.m3u8",GROUP-ID="default-text-group",LANGUAGE="el",NAME="stream_1",AUTOSELECT=YES
#EXT-X-MEDIA:TYPE=SUBTITLES,URI="playlist_s-fr.webvtt.m3u8",GROUP-ID="default-text-group",LANGUAGE="fr",NAME="stream_2",AUTOSELECT=YES
#EXT-X-MEDIA:TYPE=SUBTITLES,URI="playlist_s-pt-BR.webvtt.m3u8",GROUP-ID="default-text-group",LANGUAGE="pt-BR",NAME="stream_3",AUTOSELECT=YES
#EXT-X-STREAM-INF:BANDWIDTH=8062646,AVERAGE-BANDWIDTH=1824731,CODECS="avc1.4d401f,mp4a.40.2",RESOLUTION=768x576,AUDIO="default-audio-group",SUBTITLES="default-text-group"
playlist_v-0576p-1400k-libx264.mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=6096050,AVERAGE-BANDWIDTH=1410993,CODECS="avc1.4d401f,mp4a.40.2",RESOLUTION=640x480,AUDIO="default-audio-group",SUBTITLES="default-text-group"
playlist_v-0480p-1000k-libx264.mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4005148,AVERAGE-BANDWIDTH=1146764,CODECS="avc1.4d401f,mp4a.40.2",RESOLUTION=480x360,AUDIO="default-audio-group",SUBTITLES="default-text-group"
playlist_v-0360p-0750k-libx264.mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2190444,AVERAGE-BANDWIDTH=784019,CODECS="avc1.4d401f,mp4a.40.2",RESOLUTION=320x240,AUDIO="default-audio-group",SUBTITLES="default-text-group"
playlist_v-0240p-0400k-libx264.mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=827972,AVERAGE-BANDWIDTH=482170,CODECS="avc1.42c01e,mp4a.40.2",RESOLUTION=192x144,AUDIO="default-audio-group",SUBTITLES="default-text-group"
playlist_v-0144p-0100k-libx264.mp4.m3u8
Binary file not shown.
-87
View File
@@ -1,87 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:5
#EXTINF:4.313,
media-u5ce0h2ki_0.ts
#EXTINF:4.800,
media-u5ce0h2ki_1.ts
#EXTINF:2.400,
media-u5ce0h2ki_2.ts
#EXTINF:4.800,
media-u5ce0h2ki_3.ts
#EXTINF:4.800,
media-u5ce0h2ki_4.ts
#EXTINF:2.400,
media-u5ce0h2ki_5.ts
#EXTINF:4.800,
media-u5ce0h2ki_6.ts
#EXTINF:4.800,
media-u5ce0h2ki_7.ts
#EXTINF:2.400,
media-u5ce0h2ki_8.ts
#EXTINF:4.800,
media-u5ce0h2ki_9.ts
#EXTINF:4.800,
media-u5ce0h2ki_10.ts
#EXTINF:2.400,
media-u5ce0h2ki_11.ts
#EXTINF:4.800,
media-u5ce0h2ki_12.ts
#EXTINF:4.800,
media-u5ce0h2ki_13.ts
#EXTINF:2.400,
media-u5ce0h2ki_14.ts
#EXTINF:4.800,
media-u5ce0h2ki_15.ts
#EXTINF:4.800,
media-u5ce0h2ki_16.ts
#EXTINF:2.400,
media-u5ce0h2ki_17.ts
#EXTINF:4.800,
media-u5ce0h2ki_18.ts
#EXTINF:4.800,
media-u5ce0h2ki_19.ts
#EXTINF:2.400,
media-u5ce0h2ki_20.ts
#EXTINF:4.800,
media-u5ce0h2ki_21.ts
#EXTINF:4.800,
media-u5ce0h2ki_22.ts
#EXTINF:2.400,
media-u5ce0h2ki_23.ts
#EXTINF:4.800,
media-u5ce0h2ki_24.ts
#EXTINF:4.800,
media-u5ce0h2ki_25.ts
#EXTINF:2.400,
media-u5ce0h2ki_26.ts
#EXTINF:4.800,
media-u5ce0h2ki_27.ts
#EXTINF:4.800,
media-u5ce0h2ki_28.ts
#EXTINF:2.400,
media-u5ce0h2ki_29.ts
#EXTINF:4.800,
media-u5ce0h2ki_30.ts
#EXTINF:4.800,
media-u5ce0h2ki_31.ts
#EXTINF:2.400,
media-u5ce0h2ki_32.ts
#EXTINF:4.800,
media-u5ce0h2ki_33.ts
#EXTINF:4.800,
media-u5ce0h2ki_34.ts
#EXTINF:2.400,
media-u5ce0h2ki_35.ts
#EXTINF:4.800,
media-u5ce0h2ki_36.ts
#EXTINF:4.800,
media-u5ce0h2ki_37.ts
#EXTINF:2.400,
media-u5ce0h2ki_38.ts
#EXTINF:4.800,
media-u5ce0h2ki_39.ts
#EXTINF:4.800,
media-u5ce0h2ki_40.ts
#EXT-X-ENDLIST
-18
View File
@@ -1,18 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=678000,CODECS="avc1.4d0029,mp4a.40.2",RESOLUTION=768x432
[email protected]
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=678000,CODECS="avc1.4d0029,mp4a.40.2",RESOLUTION=768x432
[email protected]
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=2320000,CODECS="avc1.4d0029,mp4a.40.2",RESOLUTION=1280x720
[email protected]
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=2320000,CODECS="avc1.4d0029,mp4a.40.2",RESOLUTION=1280x720
[email protected]
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=198000,CODECS="avc1.42e020,mp4a.40.2",RESOLUTION=480x270
[email protected]
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=198000,CODECS="avc1.42e020,mp4a.40.2",RESOLUTION=480x270
[email protected]
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=1756000,CODECS="avc1.4d0029,mp4a.40.2",RESOLUTION=864x486
[email protected]
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=1756000,CODECS="avc1.4d0029,mp4a.40.2",RESOLUTION=864x486
[email protected]
Binary file not shown.
Binary file not shown.
-66
View File
@@ -1,66 +0,0 @@
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:NO
#EXT-X-VERSION:2
#EXT-X-TARGETDURATION:8
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag1Num0.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag1Num1.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag2Num2.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag3Num3.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag4Num4.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag5Num5.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag6Num6.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag7Num7.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag8Num8.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag9Num9.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag10Num10.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag11Num11.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag12Num12.ts
#EXTINF:8,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag13Num13.ts
#EXTINF:3,
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-06-17T18:32:00Z
fms_sampleFrag14Num14.ts
#EXT-X-ENDLIST
-36
View File
@@ -1,36 +0,0 @@
#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:8
#EXT-X-VERSION:3
#EXT-X-PROGRAM-DATE-TIME:2012-12-06T19:10:03+00:00
#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2012-12-06T19:10:03+00:00
#EXTINF:6.006,{}
fragment.ts
#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2012-12-06T19:11:06+00:00
#EXTINF:6.006,{}
fragment.ts
#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2012-12-06T19:23:23+00:00
#EXTINF:6.006,{}
fragment.ts
#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2012-12-06T19:23:23+00:00
#EXTINF:6.006,{}
fragment.ts
#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2012-12-06T19:23:29+00:00
#EXTINF:6.006,{}
fragment.ts
#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2012-12-06T19:24:56+00:00
#EXTINF:6.006,{}
fragment.ts
#EXT-X-DISCONTINUITY
#EXT-X-PROGRAM-DATE-TIME:2012-12-06T19:25:03+00:00
#EXTINF:6.006,{}
fragment.ts
#EXT-X-ENDLIST
-44
View File
@@ -1,44 +0,0 @@
#EXTM3U
#EXT-X-VERSION:1
## Created with Unified Streaming Platform(version=1.6.6)
#EXT-X-MEDIA-SEQUENCE:176505193
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:10
#EXT-X-PROGRAM-DATE-TIME:TEST1
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505193.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505194.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505195.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505196.ts
#EXTINF:10, no desc
interpretation-audio=64000-video=500000-176505197.ts
#EXT-X-PROGRAM-DATE-TIME:TEST3
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505198.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505199.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505200.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505201.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505202.ts
#EXTINF:10, no desc
interpretation-audio=64000-video=500000-176505203.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505204.ts
#EXT-X-PROGRAM-DATE-TIME:TEST4
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505205.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505206.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505207.ts
#EXTINF:8, no desc
interpretation-audio=64000-video=500000-176505208.ts
#EXTINF:10, no desc
interpretation-audio=64000-video=500000-176505209.ts
#EXT-X-ENDLIST
-5
View File
@@ -1,5 +0,0 @@
#EXTM3U
#EXT-X-VERSION:1
## Created with Unified Streaming Platform(version=1.6.6)
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=597840,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=640x360
interpretation-audio=64000-video=500000.m3u8
-17
View File
@@ -1,17 +0,0 @@
#EXTM3U
#EXT-X-VERSION:1
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:136803485
#EXT-X-KEY:METHOD=NONE
#EXT-X-PROGRAM-DATE-TIME:2013-05-08T17:40:50Z
#EXTINF:10,
segment0.ts
#EXTINF:10,
segment1.ts
#EXTINF:10,
segment2.ts
#EXTINF:10,
segment3.ts
#EXTINF:10,
segment4.ts
#EXT-X-ENDLIST
Binary file not shown.
Binary file not shown.
Binary file not shown.
-11
View File
@@ -1,11 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:14
#EXT-X-MEDIA-SEQUENCE:37121
#EXTINF:10.224,
media_w506387179_37121.ts
#EXTINF:10.239,
media_w506387179_37122.ts
#EXTINF:10.223,
media_w506387179_37123.ts
#EXT-X-ENDLIST
-5
View File
@@ -1,5 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=281439,CODECS="avc1.66.31,mp4a.40.2",RESOLUTION=640x360
popularteutonia-video/popularteutonia-video/chunklist_w506387179.m3u8
-16
View File
@@ -1,16 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Chinese",FORCED=NO,AUTOSELECT=YES,URI="chinese/ed.m3u8",LANGUAGE="zh"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French",FORCED=NO,AUTOSELECT=YES,URI="french/ed.m3u8",LANGUAGE="fr"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="media/b160000-english.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="sp",NAME="Spanish",DEFAULT=NO,AUTOSELECT=YES,URI="media/b160000-spanish.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="Commentary (eng)",DEFAULT=NO,AUTOSELECT=NO,URI="media/b160000-commentary.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=2962000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=1280x720,AUDIO="aac",SUBTITLES="subs"
media/b2962000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1427000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=768x432,AUDIO="aac",SUBTITLES="subs"
media/b1427000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=688000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=448x252,AUDIO="aac",SUBTITLES="subs"
media/b688000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=331000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=284x160,AUDIO="aac",SUBTITLES="subs"
media/b331000-video.m3u8
File diff suppressed because it is too large Load Diff
Binary file not shown.
-45
View File
@@ -1,45 +0,0 @@
#EXTM3U
#EXT-X-VERSION:4
## Created with Unified Streaming Platform (version=1.15.1-31309)
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-TARGETDURATION:4
#USP-X-TIMESTAMP-MAP:MPEGTS=900000,LOCAL=1970-01-01T00:00:00Z
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-1.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-2.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-3.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-4.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-5.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-6.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-7.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-8.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-9.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-10.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-11.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-12.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-13.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-14.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-15.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-16.ts
#EXTINF:4, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-17.ts
#EXTINF:2.8333, no desc
manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568-18.ts
#EXT-X-ENDLIST
-15
View File
@@ -1,15 +0,0 @@
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=960000,RESOLUTION=640x360,CODECS="mp4a.40.2,avc1.4d401e",FRAME-RATE=30.0,CLOSED-CAPTIONS=NONE
https://videos-cloudfront-usp.jwpsrv.com/697447fb_17168bf482c87a9ca77629506aef91ae741b18d2/sites/MDzvJl71/media/pZxWPRg4/versions/pZxWPRg4/manifest.ism/manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=841568.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5220000,RESOLUTION=1920x1080,CODECS="mp4a.40.2,avc1.640028",FRAME-RATE=30.0,CLOSED-CAPTIONS=NONE
https://videos-cloudfront-usp.jwpsrv.com/697447fb_17168bf482c87a9ca77629506aef91ae741b18d2/sites/MDzvJl71/media/pZxWPRg4/versions/pZxWPRg4/manifest.ism/manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=5099752.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2580000,RESOLUTION=1280x720,CODECS="mp4a.40.2,avc1.4d401f",FRAME-RATE=30.0,CLOSED-CAPTIONS=NONE
https://videos-cloudfront-usp.jwpsrv.com/697447fb_17168bf482c87a9ca77629506aef91ae741b18d2/sites/MDzvJl71/media/pZxWPRg4/versions/pZxWPRg4/manifest.ism/manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=2462768.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1650000,RESOLUTION=960x540,CODECS="mp4a.40.2,avc1.4d401f",FRAME-RATE=30.0,CLOSED-CAPTIONS=NONE
https://videos-cloudfront-usp.jwpsrv.com/697447fb_17168bf482c87a9ca77629506aef91ae741b18d2/sites/MDzvJl71/media/pZxWPRg4/versions/pZxWPRg4/manifest.ism/manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=1537008.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=760000,RESOLUTION=480x270,CODECS="mp4a.40.2,avc1.42c015",FRAME-RATE=30.0,CLOSED-CAPTIONS=NONE
https://videos-cloudfront-usp.jwpsrv.com/697447fb_17168bf482c87a9ca77629506aef91ae741b18d2/sites/MDzvJl71/media/pZxWPRg4/versions/pZxWPRg4/manifest.ism/manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=639296.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=530000,RESOLUTION=320x180,CODECS="mp4a.40.2,avc1.42c00d",FRAME-RATE=30.0,CLOSED-CAPTIONS=NONE
https://videos-cloudfront-usp.jwpsrv.com/697447fb_17168bf482c87a9ca77629506aef91ae741b18d2/sites/MDzvJl71/media/pZxWPRg4/versions/pZxWPRg4/manifest.ism/manifest-audio_0_q7BAv3mA_WbaG9LKN=112000-video_0_q7BAv3mA_Uql258jy=413600.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=120000,CODECS="mp4a.40.2"
https://videos-cloudfront-usp.jwpsrv.com/697447fb_17168bf482c87a9ca77629506aef91ae741b18d2/sites/MDzvJl71/media/pZxWPRg4/versions/pZxWPRg4/manifest.ism/manifest-audio_0_q7BAv3mA_WbaG9LKN=112000.m3u8
-7
View File
@@ -1,7 +0,0 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="en",NAME="English"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="stereo",LANGUAGE="dubbing",NAME="Dubbing",URI="audio/stereo/none/128kbit.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=831270,CODECS="mp4a.40.2",AUDIO="stereo"
audio/stereo/en/128kbit.m3u8
-236
View File
@@ -1,236 +0,0 @@
#EXTM3U
#EXT-X-TARGETDURATION:8
#EXT-X-VERSION:7
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MAP:URI="main.mp4",BYTERANGE="1118@0"
#EXTINF:7.98333,
#EXT-X-BYTERANGE:1700094@1118
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1789481@1701212
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1777588@3490693
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1752144@5268281
main.mp4
#EXTINF:7.26667,
#EXT-X-BYTERANGE:1563219@7020425
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1801953@8583644
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1834406@10385597
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1785475@12220003
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1823288@14005478
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1829143@15828766
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1800453@17657909
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1803327@19458362
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1873636@21261689
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1948640@23135325
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1840513@25083965
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1937752@26924478
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1997584@28862230
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1924169@30859814
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1895068@32783983
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1934194@34679051
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2038511@36613245
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1930106@38651756
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1922710@40581862
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2055801@42504572
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1963459@44560373
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1960831@46523832
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2038186@48484663
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2065137@50522849
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1960086@52587986
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1984801@54548072
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2061777@56532873
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2006124@58594650
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2025156@60600774
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2043210@62625930
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2043844@64669140
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1993528@66712984
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1998870@68706512
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2099623@70705382
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2162266@72805005
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:1997458@74967271
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2075347@76964729
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2180556@79040076
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2023098@81220632
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2053500@83243730
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2074093@85297230
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2133059@87371323
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2015841@89504382
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2051188@91520223
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2149171@93571411
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2103043@95720582
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2039241@97823625
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2127240@99862866
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2162908@101990106
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2067454@104153014
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2038579@106220468
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2119116@108259047
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2142043@110378163
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2049034@112520206
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2163788@114569240
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2171266@116733028
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2136193@118904294
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2113276@121040487
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2205504@123153763
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2237552@125359267
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2129080@127596819
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2115078@129725899
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2258589@131840977
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2177462@134099566
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2174962@136277028
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2253878@138451990
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2361884@140705868
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2272546@143067752
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2228068@145340298
main.mp4
#EXTINF:8.00000,
#EXT-X-BYTERANGE:2320491@147568366
main.mp4
#EXTINF:7.96667,
#EXT-X-BYTERANGE:2087892@149888857
main.mp4
#EXTINF:0.78333,
#EXT-X-BYTERANGE:195177@151976749
main.mp4
#EXT-X-ENDLIST
-152
View File
@@ -1,152 +0,0 @@
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a1",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="a1/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a2",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="6",URI="a2/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a3",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="6",URI="a3/prog_index.m3u8"
#EXT-X-MEDIA:TYPE=CLOSED-CAPTIONS,GROUP-ID="cc",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,INSTREAM-ID="CC1"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="sub1",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,FORCED=NO,URI="s1/en/prog_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=928091,BANDWIDTH=1015727,CODECS="avc1.640028",RESOLUTION=1920x1080,URI="tp5/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=731514,BANDWIDTH=760174,CODECS="avc1.64001f",RESOLUTION=1280x720,URI="tp4/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=509153,BANDWIDTH=520162,CODECS="avc1.64001f",RESOLUTION=960x540,URI="tp3/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=176942,BANDWIDTH=186651,CODECS="avc1.64001f",RESOLUTION=640x360,URI="tp2/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=90796,BANDWIDTH=95410,CODECS="avc1.64001f",RESOLUTION=480x270,URI="tp1/iframe_index.m3u8"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2190673,BANDWIDTH=2523597,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v5/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8052613,BANDWIDTH=9873268,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v9/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6133114,BANDWIDTH=7318337,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v8/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4681537,BANDWIDTH=5421720,CODECS="avc1.64002a,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v7/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3183969,BANDWIDTH=3611257,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v6/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1277747,BANDWIDTH=1475903,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v4/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=890848,BANDWIDTH=1017705,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v3/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=533420,BANDWIDTH=582820,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v2/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=303898,BANDWIDTH=339404,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v1/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2413172,BANDWIDTH=2746096,CODECS="avc1.640020,ac-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v5/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8275112,BANDWIDTH=10095767,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v9/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6355613,BANDWIDTH=7540836,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v8/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4904036,BANDWIDTH=5644219,CODECS="avc1.64002a,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v7/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3406468,BANDWIDTH=3833756,CODECS="avc1.640020,ac-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v6/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1500246,BANDWIDTH=1698402,CODECS="avc1.64001f,ac-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v4/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1113347,BANDWIDTH=1240204,CODECS="avc1.64001f,ac-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v3/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=755919,BANDWIDTH=805319,CODECS="avc1.64001f,ac-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v2/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=526397,BANDWIDTH=561903,CODECS="avc1.64001f,ac-3",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v1/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2221172,BANDWIDTH=2554096,CODECS="avc1.640020,ec-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v5/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=8083112,BANDWIDTH=9903767,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v9/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6163613,BANDWIDTH=7348836,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v8/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4712036,BANDWIDTH=5452219,CODECS="avc1.64002a,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v7/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3214468,BANDWIDTH=3641756,CODECS="avc1.640020,ec-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v6/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1308246,BANDWIDTH=1506402,CODECS="avc1.64001f,ec-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v4/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=921347,BANDWIDTH=1048204,CODECS="avc1.64001f,ec-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v3/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=563919,BANDWIDTH=613319,CODECS="avc1.64001f,ec-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v2/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=334397,BANDWIDTH=369903,CODECS="avc1.64001f,ec-3",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v1/prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=287207,BANDWIDTH=328352,CODECS="hvc1.2.4.L123.B0",RESOLUTION=1920x1080,URI="tp10/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=216605,BANDWIDTH=226274,CODECS="hvc1.2.4.L123.B0",RESOLUTION=1280x720,URI="tp9/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=154000,BANDWIDTH=159037,CODECS="hvc1.2.4.L123.B0",RESOLUTION=960x540,URI="tp8/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=90882,BANDWIDTH=92800,CODECS="hvc1.2.4.L123.B0",RESOLUTION=640x360,URI="tp7/iframe_index.m3u8"
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=50569,BANDWIDTH=51760,CODECS="hvc1.2.4.L123.B0",RESOLUTION=480x270,URI="tp6/iframe_index.m3u8"
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1966314,BANDWIDTH=2164328,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v14/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6105163,BANDWIDTH=6664228,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v18/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4801073,BANDWIDTH=5427899,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v17/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3441312,BANDWIDTH=4079770,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v16/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2635933,BANDWIDTH=2764701,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v15/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1138612,BANDWIDTH=1226255,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v13/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=829339,BANDWIDTH=901770,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v12/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=522229,BANDWIDTH=548927,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v11/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=314941,BANDWIDTH=340713,CODECS="hvc1.2.4.L123.B0,mp4a.40.2",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a1",SUBTITLES="sub1"
v10/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2188813,BANDWIDTH=2386827,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v14/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6327662,BANDWIDTH=6886727,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v18/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=5023572,BANDWIDTH=5650398,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v17/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3663811,BANDWIDTH=4302269,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v16/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2858432,BANDWIDTH=2987200,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v15/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1361111,BANDWIDTH=1448754,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v13/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1051838,BANDWIDTH=1124269,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v12/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=744728,BANDWIDTH=771426,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v11/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=537440,BANDWIDTH=563212,CODECS="hvc1.2.4.L123.B0,ac-3",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a2",SUBTITLES="sub1"
v10/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1996813,BANDWIDTH=2194827,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=960x540,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v14/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=6135662,BANDWIDTH=6694727,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v18/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=4831572,BANDWIDTH=5458398,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v17/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=3471811,BANDWIDTH=4110269,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=1920x1080,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v16/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=2666432,BANDWIDTH=2795200,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=1280x720,FRAME-RATE=60.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v15/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1169111,BANDWIDTH=1256754,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=768x432,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v13/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=859838,BANDWIDTH=932269,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=640x360,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v12/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=552728,BANDWIDTH=579426,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=480x270,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v11/prog_index.m3u8
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=345440,BANDWIDTH=371212,CODECS="hvc1.2.4.L123.B0,ec-3",RESOLUTION=416x234,FRAME-RATE=30.000,CLOSED-CAPTIONS="cc",AUDIO="a3",SUBTITLES="sub1"
v10/prog_index.m3u8
-50
View File
@@ -1,50 +0,0 @@
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-TARGETDURATION:2
#EXT-X-SERVER-CONTROL:CAN-BLOCK-RELOAD=YES,PART-HOLD-BACK=2.171
#EXT-X-PART-INF:PART-TARGET=1.034
#EXT-X-MAP:URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/18446744073709551615.m4s?skid=default&signature=NjlhMDE5YTBfZTkxMzAwNTZiOTczOTI3NTgwOThlNDU4NzA0ZTc5NjlkMmI4MjYyZWVjN2Q5Yjk0OTVlZTQxNTRlZTM0NzU3OA==&zone=0"
#EXT-X-MEDIA-SEQUENCE:13767
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:04:50.593+00:00
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13767.m4s?skid=default&signature=NjlhMDE5YTBfNjk5YzgwNTRlMDg3NGZkYjdjMzYzMWUzMDc1ZjdlMmFmOGVhNzY5NDk4MmFhOTEwNWQ3ZjBlMDM2ZjIyY2RmNA==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:04:52.593+00:00
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13768.m4s?skid=default&signature=NjlhMDE5YTBfZmIzOTE1OTYwNTdkZjFhYzA0ZDgxNjZkMjI4N2QyZmM4ZDQ5YjQyN2QwMzIzNGE5MmZjODJkNDM4ZjA4YWRlZA==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:04:54.593+00:00
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13769.m4s?skid=default&signature=NjlhMDE5YTBfNTU1ZDNlODkzZTYwYTcxZGM5ZjJlMzJhMGQ5YWI4MTMzZGI0YzdiYjRmZjQ5MTFkYzM1YWE4ZTFkYWQzM2NmNQ==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:04:56.593+00:00
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13770.m4s?skid=default&signature=NjlhMDE5YTBfZTQxYTZjYWMzMzc5ZjcxZWUwZmY0M2FmNWQ4ZDcxNjVjOGJmYTY0M2RjOTdiMDExMDhjNTQ4M2QzMDA0ZWQ0Yw==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:04:58.593+00:00
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13771.m4s?skid=default&signature=NjlhMDE5YTBfODdkYmZiYmI3NDZjMzdmNmNkMDhjNjQzMjA5YjQ3YTI3NzYwNmVlY2JmNjYxZDEzMGM2ZWY4ZWZkMWExODdhNw==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:05:00.593+00:00
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13772.m4s?skid=default&signature=NjlhMDE5YTBfOTFjOTU5YWE4NzJlZmYyOTkyNzI5NjhiNDdiMzBhYmEwZjYzZjU1ZTFlYzM4MjhkZDIwZjhhZWFjMzRkOGVmYg==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:05:02.593+00:00
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13773.m4s?skid=default&signature=NjlhMDE5YTBfMTQ2NzA2NjY2OGFlNzUyZjZiZTllNDhjMWMzZjQxMDcwNWMxY2U0MWU5NzFjZDgwM2VlMzlmMjRmY2U0ZTMxYg==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:05:04.593+00:00
#EXT-X-PART:DURATION=1,URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13774.0.m4s?skid=default&signature=NjlhMDE5YTBfMTFhZmNjNGJlODk1NzM3NGQ1NmU2ZmEyMzU0OTAwNTdkMDVhOWE4Yjg5ZDMyYmViZmNhNjU1MmI1ZjNlNjhlMQ==&zone=0",INDEPENDENT=YES
#EXT-X-PART:DURATION=1,URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13774.1.m4s?skid=default&signature=NjlhMDE5YTBfMzNjMzc0ZjgwNGQ1MTI5MzE3OTc1YjNmM2FjNzE2Y2U5ZDU3YjIzNWIyMDQ2NzAxNTVkNzRjMGMwMmE0YmVlOQ==&zone=0"
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13774.m4s?skid=default&signature=NjlhMDE5YTBfMzZlNDBhYjQ0YTlmNGNiODZkNTRiYmYwMzk4ZGUxYzVmN2M5Mzk2YTA3MTA2MDQ1NmJkNzM3Mzk3YTA0YjVlNA==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:05:06.593+00:00
#EXT-X-PART:DURATION=1,URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13775.0.m4s?skid=default&signature=NjlhMDE5YTBfMjNjMGVjMzdkYzA5MjlmOWU2Y2JjMTQ0NjdiYmFmYTgyMTcwYzU1ZDM5ZmJhMjMwNzFjNGExNmM4NTU4Y2ZjZg==&zone=0",INDEPENDENT=YES
#EXT-X-PART:DURATION=1,URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13775.1.m4s?skid=default&signature=NjlhMDE5YTBfZTkyYWI2MDA4NjAyNjI3OGM2NmM2YjNmOTdhMzcwOWNlMTEwZmU0ZmM1OGYzN2E1YmFkZTQzYTQwMWQyYTRiMg==&zone=0"
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13775.m4s?skid=default&signature=NjlhMDE5YTBfZTI1NjVjZTgzNzNjOGFkYjdiODEzNzY5N2ZiNWY3NjZlYTg0M2ViZDc3ZDdhZTExMjk5MjI4ZTI5YjllNGVlZA==&zone=0
#EXT-X-PROGRAM-DATE-TIME:2026-02-19T10:05:08.593+00:00
#EXT-X-PART:DURATION=1,URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13776.0.m4s?skid=default&signature=NjlhMDE5YTBfMjEwNjMyZGVlYzY4MmZlNDA2ZDhlNmM2Yzg0ZTg3YThlMDkyMDE1YzhmNTdlMDg1MjU0NWM3ZDdlMmI1OTNlOA==&zone=0",INDEPENDENT=YES
#EXT-X-PART:DURATION=1,URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13776.1.m4s?skid=default&signature=NjlhMDE5YTBfODQzYzFhZThlMzViMGUwY2ZmNzAzMDViODA5NmMwZDkyMDc2MzBmOGI4YzJmY2U4ZjgwYzQ3ZDRkNTkxYzMyOQ==&zone=0"
#EXTINF:2,
https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13776.m4s?skid=default&signature=NjlhMDE5YTBfODFjZDNlMjEyOTRiNzg5ODJhNzYyN2Y4YTA0MWM0NjFkOTliMWZlNjUwNGI0ZWIwMjc5YjRiNzk3ODdjMzgxMg==&zone=0
#EXT-X-PART:DURATION=1,URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13777.0.m4s?skid=default&signature=NjlhMDE5YTBfYmNiOWJiZjIxMGUwZWI2MDM3ZGRiMzFmNTFiZGY0MWZiYjQ2NDAzZmZmZWM4N2E2MmNiOWJmNzMzNTQ4Yzk3Yw==&zone=0",INDEPENDENT=YES
#EXT-X-PRELOAD-HINT:TYPE=PART,URI="https://chunk-gcp-us-east1-vop1.fastly.mux.com/v1/chunk/qgC2PzuWbZKlPMYq76Ou02pdqXx00ohqZa7q9iXse2UvJdBXkgAkWF1jOw2GA02W7dFr8NA01xeI7NsC9nFYL8cbM1jngZy39vkNmyH7azaHbXM/13777.1.m4s?skid=default&signature=NjlhMDE5YTBfZWE1ZjlkNzQ0NzFmYWI4YzViZmFjNjFmZjJlYmI1MGQ2OWVhNzgzOTUyYjIyNGJkY2FhNDEzNGFkZGU0MTA1NA==&zone=0"
#EXT-X-RENDITION-REPORT:URI="/exHWYv6RMb5Ebv02Qg1jgY8nm45rh4g02M7J4rgKQOTrAW2j5eO1a9p7yeI7r252brzExe4NqZMhacJ9WvVLbQPXEMjj3pOB6cQH01v7TmrgEg/rendition.m3u8?cdn=fastly&expires=1772100000&live=1&skid=default&signature=NjlhMDE5YTBfYTcyNDI4NDIwZjlkNGQ4NTJjZjhhNmMxYzczZWViNzE1ZmM4NzhmNDMxNTU0ZTE5MzVlZDJkZDgwYmYyMTg5NA=="
#EXT-X-RENDITION-REPORT:URI="/402gWK4kVgmdBJzX1Pc00DEFywkLj0139RYuIZtepGttudbFdMzlikw7E1FGY5vNhmuAkV01xkRItrBcIQTygNRYbwxYHRZ00feMU/rendition.m3u8?cdn=fastly&expires=1772100000&live=1&skid=default&signature=NjlhMDE5YTBfNjgzODA5NTJmODY1MDkxZmU4MTgwNmZhZjM4MTgwMDUxMzliMzc5OWY4YzlhMDBiN2MwYWZmNjlkM2M3NTY0MQ=="
#EXT-X-RENDITION-REPORT:URI="/5uM3MOkfoRnOqNUfk1JVRfFfBcvoVhtOnJxF01fIhPRxviPL6ToqgB38Rqm3IjIXzWs00HpC4i9I5z022NcRgVVieDmvqlBWj00mBZClXyn84Dw/rendition.m3u8?cdn=fastly&expires=1772100000&live=1&skid=default&signature=NjlhMDE5YTBfMDY2M2Q1YzdlZGM4ODM1MGUxYzU0NTkxNGNmMDE0MWUxZTNlNzg4M2ZiM2YxNWQ2ZDM0ODQ5OTlkNDE2MTdiZQ=="
#EXT-X-RENDITION-REPORT:URI="/dfjhdoc1n4ZvHXGPL4mX01srgXbDUDV9sGPnyUvCfiy5jObUqQxwWCBM6n78osvlRPIONlmcD00Fea100au6lg6NrsFZcoOL9K2/rendition.m3u8?cdn=fastly&expires=1772100000&live=1&skid=default&signature=NjlhMDE5YTBfNDc1NDk0MzIzNzJhOTgzYjJhYzQ3ZWFlYzcwNWIxZjM1M2I1NjZhNWFiNGMwNjUyYmY3NDE2MTQ5YjkzMjY3OA=="
#EXT-X-RENDITION-REPORT:URI="/H01ZlTPGBC3UShrFGCoIvq4ZiYpIYCGKXZ0002Pw02cpsnKaQFDWALC7gQsyRXe95E84px2THVcoa7bRW4iMNCWjhg/rendition.m3u8?cdn=fastly&expires=1772100000&live=1&skid=default&signature=NjlhMDE5YTBfNWRmMDg5MDhkMjc4MDdhZDhiNzI3ZmU1ZmFiMzIzMTc1MDVhOWZiMTRkNTMxMDliMWM2YTBjMzQ5OWYwNTVlZg=="
-15
View File
@@ -1,15 +0,0 @@
#EXTM3U
#EXT-X-VERSION:7
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-hi-0",NAME="Default",CHANNELS="2",AUTOSELECT=YES,DEFAULT=YES,URI="https://manifest-gcp-us-east4-vop1.edgemv.mux.com/x02cwe8AnQdIrmeTtwxjV4CwAYmGv2Af0002ni01fu5201ZcMDOmmqlkm2XxrYBuq02qrACvqwi202NxAYgGYDrnkng1w/rendition.m3u8?cdn=fastly&expires=1772121600&live=1&skid=edgemv-default-1&signature=NjlhMDZlMDBfOWQ1NjY2NzFjOTg0Mjc1OTc4NTM5OTc5NWQ3YTFhNzM1NWNhZDJmOGE1NmJlNDUwYmRmNTg4YWUyNjAyODZkOA==&vsid=KkV1Lvb8OsQe6uONjPJcYxRSKkd7cev9LnmtlvUqEypaZpls4wIPLRzIAroJnP0000XtIWjzEq00oY"
#EXT-X-STREAM-INF:BANDWIDTH=2564100,AVERAGE-BANDWIDTH=2564100,CODECS="mp4a.40.2,avc1.640020",AUDIO="audio-hi-0",RESOLUTION=1280x720,CLOSED-CAPTIONS=NONE
https://manifest-gcp-us-east4-vop1.edgemv.mux.com/Ajw5FEXHZ2kfb009Eynt01PGs01C014n6DOsbZu5bzX6mNzSWkx3uNURbdCEhvg1OlpjYxY2QIAO012mD1E007JaL029sdohSJ00JBzLwJ2bTvd4Kcw/rendition.m3u8?cdn=fastly&expires=1772121600&live=1&skid=edgemv-default-1&signature=NjlhMDZlMDBfMGIyMGUyMjIwM2ZhZTk3NjM1Yzc2NWFmYWI3Y2M1YWVmNzYyNzNlZWU5ZGE5ODRlMjZiMTZlZDJkY2Q4MDhhNQ==&vsid=KkV1Lvb8OsQe6uONjPJcYxRSKkd7cev9LnmtlvUqEypaZpls4wIPLRzIAroJnP0000XtIWjzEq00oY
#EXT-X-STREAM-INF:BANDWIDTH=1696200,AVERAGE-BANDWIDTH=1696200,CODECS="mp4a.40.2,avc1.640020",AUDIO="audio-hi-0",RESOLUTION=960x540,CLOSED-CAPTIONS=NONE
https://manifest-gcp-us-east4-vop1.edgemv.mux.com/lfHuw00BszIttr55HYSItzrAuO5lCI1lXnlNd43Zf5rirXQIkMCfezeR01J01GH75aazTAI4kTQAgP2hRB500iXHnbYCOvsBlPtuJ5KCJ00Xg6u00/rendition.m3u8?cdn=fastly&expires=1772121600&live=1&skid=edgemv-default-1&signature=NjlhMDZlMDBfMmQ0ZDIwMjkxYmUxZGQ5ZjMyMDljOWFjZDJlZTIyZTU5ODA4MmU3NTEyZTc1NTZiMjNhZGIyNDgyZWM3N2RmNg==&vsid=KkV1Lvb8OsQe6uONjPJcYxRSKkd7cev9LnmtlvUqEypaZpls4wIPLRzIAroJnP0000XtIWjzEq00oY
#EXT-X-STREAM-INF:BANDWIDTH=4712400,AVERAGE-BANDWIDTH=4712400,CODECS="mp4a.40.2,avc1.64002a",AUDIO="audio-hi-0",RESOLUTION=1920x1080,CLOSED-CAPTIONS=NONE
https://manifest-gcp-us-east4-vop1.edgemv.mux.com/xIb3vQ2JY02bdd9noWFI8CA4EEA38ttChhpg1601Vi8KPra1lHJVR1bRNKsqUFmjns8ICU00FQCdcQhY02wFYVlk00W6FZXni5PNC/rendition.m3u8?cdn=fastly&expires=1772121600&live=1&skid=edgemv-default-1&signature=NjlhMDZlMDBfMDVjODEyZGY1NjcxZjhmN2ZiYmU1MjE1ZTJlNjI4N2IwNmIxMDdmMGQ1ZDRlMTU5ZjQ2MWRlZjRkODQ2MWNhNw==&vsid=KkV1Lvb8OsQe6uONjPJcYxRSKkd7cev9LnmtlvUqEypaZpls4wIPLRzIAroJnP0000XtIWjzEq00oY
#EXT-X-STREAM-INF:BANDWIDTH=987800,AVERAGE-BANDWIDTH=987800,CODECS="mp4a.40.2,avc1.64001f",AUDIO="audio-hi-0",RESOLUTION=640x360,CLOSED-CAPTIONS=NONE
https://manifest-gcp-us-east4-vop1.edgemv.mux.com/OAh8j7wI02wIZjlj11ITDTbFv02iLRViF024rFITqf00zna4mDKj2L268Se5rlkLdXC83RvWMsVLn9KkpIDy0055ZdGzfU005CfyXN7Q85QO00N2ug/rendition.m3u8?cdn=fastly&expires=1772121600&live=1&skid=edgemv-default-1&signature=NjlhMDZlMDBfNTA4MWQ2NWQzMTc0NDU4OGUwNGQ2ZjdkNmQzNTIxZTU3NjcyZTg1M2VkMDFlNDU3OTA0M2E1ZDBjMzliZjdlMQ==&vsid=KkV1Lvb8OsQe6uONjPJcYxRSKkd7cev9LnmtlvUqEypaZpls4wIPLRzIAroJnP0000XtIWjzEq00oY
#EXT-X-STREAM-INF:BANDWIDTH=700700,AVERAGE-BANDWIDTH=700700,CODECS="mp4a.40.2,avc1.64001e",AUDIO="audio-hi-0",RESOLUTION=480x270,CLOSED-CAPTIONS=NONE
https://manifest-gcp-us-east4-vop1.edgemv.mux.com/YnwKeA9pBuwssrpLK6AMhUEbtDrlsLeBf2JVqgAhkQqcCWxP9sd1OOq01fcJEXelm85KMt01EdDhOlxdPZKHgUeubMY00T02FZ5L/rendition.m3u8?cdn=fastly&expires=1772121600&live=1&skid=edgemv-default-1&signature=NjlhMDZlMDBfYjVhNTNhYWEyOThiNWQ3YTBjNzY2MmUzOGVlYjMyOGNiZGFlMWEwYjEzMmFmMDQ5ZWU3ODBjYjkzZWFiOTA3YQ==&vsid=KkV1Lvb8OsQe6uONjPJcYxRSKkd7cev9LnmtlvUqEypaZpls4wIPLRzIAroJnP0000XtIWjzEq00oY
-17
View File
@@ -1,17 +0,0 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,URI="text-540/playlist.m3u8",GROUP-ID="text-540",NAME="Text"
#EXT-X-MEDIA:TYPE=SUBTITLES,URI="text-720/playlist.m3u8",GROUP-ID="text-720",NAME="Text"
#EXT-X-MEDIA:TYPE=SUBTITLES,URI="text-1080/playlist.m3u8",GROUP-ID="text-1080",NAME="Text"
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-540/playlist.m3u8",GROUP-ID="audio-540",LANGUAGE="en",NAME="ENGLISH",CHANNELS="2"
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-720/playlist.m3u8",GROUP-ID="audio-720",LANGUAGE="en",NAME="ENGLISH",CHANNELS="2"
#EXT-X-MEDIA:TYPE=AUDIO,URI="audio-1080/playlist.m3u8",GROUP-ID="audio-1080",LANGUAGE="en",NAME="ENGLISH",CHANNELS="2"
#EXT-X-STREAM-INF:BANDWIDTH=240648,AVERAGE-BANDWIDTH=229254,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=960x540,AUDIO="audio-540",SUBTITLES="text-540"
video-540/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=273583,AVERAGE-BANDWIDTH=261082,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=1280x720,AUDIO="audio-720",SUBTITLES="text-720"
video-720/playlist.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=446911,AVERAGE-BANDWIDTH=416641,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1920x1080,AUDIO="audio-1080",SUBTITLES="text-1080"
video-1080/playlist.m3u8
https://mtoczko.github.io/hls-test-streams/test-group/video-540/playlist.m3u8
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
-113
View File
@@ -1,113 +0,0 @@
#EXTM3U
#EXT-X-VERSION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:4
#EXTINF:4.0,
video/720p/ts/segment_0.ts
#EXTINF:4.0,
video/720p/ts/segment_1.ts
#EXTINF:4.0,
video/720p/ts/segment_2.ts
#EXTINF:4.0,
video/720p/ts/segment_3.ts
#EXTINF:4.0,
video/720p/ts/segment_4.ts
#EXTINF:4.0,
video/720p/ts/segment_5.ts
#EXTINF:4.0,
video/720p/ts/segment_6.ts
#EXTINF:4.0,
video/720p/ts/segment_7.ts
#EXTINF:4.0,
video/720p/ts/segment_8.ts
#EXTINF:4.0,
video/720p/ts/segment_9.ts
#EXTINF:4.0,
video/720p/ts/segment_10.ts
#EXTINF:4.0,
video/720p/ts/segment_11.ts
#EXTINF:4.0,
video/720p/ts/segment_12.ts
#EXTINF:4.0,
video/720p/ts/segment_13.ts
#EXTINF:4.0,
video/720p/ts/segment_14.ts
#EXTINF:4.0,
video/720p/ts/segment_15.ts
#EXTINF:4.0,
video/720p/ts/segment_16.ts
#EXTINF:4.0,
video/720p/ts/segment_17.ts
#EXTINF:4.0,
video/720p/ts/segment_18.ts
#EXTINF:4.0,
video/720p/ts/segment_19.ts
#EXTINF:4.0,
video/720p/ts/segment_20.ts
#EXTINF:4.0,
video/720p/ts/segment_21.ts
#EXTINF:4.0,
video/720p/ts/segment_22.ts
#EXTINF:4.0,
video/720p/ts/segment_23.ts
#EXTINF:4.0,
video/720p/ts/segment_24.ts
#EXTINF:4.0,
video/720p/ts/segment_25.ts
#EXTINF:4.0,
video/720p/ts/segment_26.ts
#EXTINF:4.0,
video/720p/ts/segment_27.ts
#EXTINF:4.0,
video/720p/ts/segment_28.ts
#EXTINF:4.0,
video/720p/ts/segment_29.ts
#EXTINF:4.0,
video/720p/ts/segment_30.ts
#EXTINF:4.0,
video/720p/ts/segment_31.ts
#EXTINF:4.0,
video/720p/ts/segment_32.ts
#EXTINF:4.0,
video/720p/ts/segment_33.ts
#EXTINF:4.0,
video/720p/ts/segment_34.ts
#EXTINF:4.0,
video/720p/ts/segment_35.ts
#EXTINF:4.0,
video/720p/ts/segment_36.ts
#EXTINF:4.0,
video/720p/ts/segment_37.ts
#EXTINF:4.0,
video/720p/ts/segment_38.ts
#EXTINF:4.0,
video/720p/ts/segment_39.ts
#EXTINF:4.0,
video/720p/ts/segment_40.ts
#EXTINF:4.0,
video/720p/ts/segment_41.ts
#EXTINF:4.0,
video/720p/ts/segment_42.ts
#EXTINF:4.0,
video/720p/ts/segment_43.ts
#EXTINF:4.0,
video/720p/ts/segment_44.ts
#EXTINF:4.0,
video/720p/ts/segment_45.ts
#EXTINF:4.0,
video/720p/ts/segment_46.ts
#EXTINF:4.0,
video/720p/ts/segment_47.ts
#EXTINF:4.0,
video/720p/ts/segment_48.ts
#EXTINF:4.0,
video/720p/ts/segment_49.ts
#EXTINF:4.0,
video/720p/ts/segment_50.ts
#EXTINF:4.0,
video/720p/ts/segment_51.ts
#EXTINF:2.280000000000001,
video/720p/ts/segment_52.ts
#EXT-X-ENDLIST
-34
View File
@@ -1,34 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="Chinese",FORCED=NO,AUTOSELECT=YES,URI="media/chinese/ed.m3u8",LANGUAGE="zh"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="French",FORCED=NO,AUTOSELECT=YES,URI="media/french/ed.m3u8",LANGUAGE="fr"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="media/b160000-english.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="sp",NAME="Spanish",DEFAULT=NO,AUTOSELECT=YES,URI="media/b160000-spanish.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac",LANGUAGE="en",NAME="Commentary (eng)",DEFAULT=NO,AUTOSELECT=NO,URI="media/b160000-commentary.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=2962000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=1280x720,AUDIO="aac",SUBTITLES="subs"
media/b2962000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1427000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=768x432,AUDIO="aac",SUBTITLES="subs"
media/b1427000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=688000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=448x252,AUDIO="aac",SUBTITLES="subs"
media/b688000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=331000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=284x160,AUDIO="aac",SUBTITLES="subs"
media/b331000-video.m3u8
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs_b",NAME="Chinese",FORCED=NO,AUTOSELECT=YES,URI="media_b/chinese/ed.m3u8",LANGUAGE="zh"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs_b",NAME="French",FORCED=NO,AUTOSELECT=YES,URI="media_b/french/ed.m3u8",LANGUAGE="fr"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac_b",LANGUAGE="en",NAME="English",DEFAULT=YES,AUTOSELECT=YES,URI="media_b/b160000-english.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac_b",LANGUAGE="sp",NAME="Spanish",DEFAULT=NO,AUTOSELECT=YES,URI="media_b/b160000-spanish.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="aac_b",LANGUAGE="en",NAME="Commentary (eng)",DEFAULT=NO,AUTOSELECT=NO,URI="media_b/b160000-commentary.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=2962000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=1280x720,AUDIO="aac_b",SUBTITLES="subs_b"
media_b/b2962000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1427000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=768x432,AUDIO="aac_b",SUBTITLES="subs_b"
media_b/b1427000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=688000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=448x252,AUDIO="aac_b",SUBTITLES="subs_b"
media_b/b688000-video.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=331000,NAME="Main",CODECS="avc1.66.30",RESOLUTION=284x160,AUDIO="aac_b",SUBTITLES="subs_b"
media_b/b331000-video.m3u8
-133
View File
@@ -1,133 +0,0 @@
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:11
#EXTINF:10.000,
url_846/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_847/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_848/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_849/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_850/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_851/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_852/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:9.967,
url_853/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.033,
url_854/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_855/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_856/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_857/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_858/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_859/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_860/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_861/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_862/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_863/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_864/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_865/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_866/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_867/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_868/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_869/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_870/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_871/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_872/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_873/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_874/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:9.967,
url_875/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.033,
url_876/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_877/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_878/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_879/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_880/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_881/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_882/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_883/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_884/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_885/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_886/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_887/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_888/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:9.967,
url_889/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.033,
url_890/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_891/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_892/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_893/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_894/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_895/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_896/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_897/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_898/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_899/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_900/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_901/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_902/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_903/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_904/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_905/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_906/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_907/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:10.000,
url_908/193039199_mp4_h264_aac_hq_7.ts
#EXTINF:4.600,
url_909/193039199_mp4_h264_aac_hq_7.ts
#EXT-X-ENDLIST
-13
View File
@@ -1,13 +0,0 @@
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=187738,RESOLUTION=416x234
stream_110k_48k_416x234.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=274228,RESOLUTION=416x234
stream_200k_48k_416x234.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=466428,RESOLUTION=416x234
stream_400k_48k_416x234.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=658628,RESOLUTION=640x360
stream_600k_48k_640x360.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=850828,RESOLUTION=640x360
stream_800k_48k_640x360.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1043028,RESOLUTION=640x360
stream_1000k_48k_640x360.m3u8
-78
View File
@@ -1,78 +0,0 @@
#EXTM3U
#EXT-X-YOSPACE-ANALYTICS-URL:"https://csm-e-cebteurxaws416-2hjvnjz85og7.tls1.yospace.com/csm/analytics;jsessionid=E97CB20FD3BCE93F89ADDB12E8C82895.csm-e-cebteurxaws416-2hjvnjz85og7.tls1.yospace.com"
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-KEY:METHOD=AES-128,URI="key1.json?f=1041&s=0&p=1822767&m=1506045858",IV=0x000000000000000000000000001BD02F
#EXTINF:10,
1041_6_1822767.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key2.json?f=1041&s=0&p=1822768&m=1506045858",IV=0x000000000000000000000000001BD030
#EXTINF:10,
1041_6_1822768.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key3.json?f=1041&s=0&p=1822769&m=1506045858",IV=0x000000000000000000000000001BD031
#EXTINF:10,
1041_6_1822769.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key4.json?f=1041&s=0&p=1822770&m=1506045858",IV=0x000000000000000000000000001BD032
#EXTINF:6.28,
1041_6_1822770.ts?m=1506045858
#EXT-X-DISCONTINUITY
#EXT-X-KEY:METHOD=NONE
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-2.ts
#EXTINF:7.2,
u-6400-m-720x408-1628-a-96-1-3.ts
#EXTINF:2.8,
u-6400-m-720x408-1628-a-96-1-4.ts
#EXT-X-DISCONTINUITY
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-1-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-2-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-3-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-4-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-5.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-6.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-7.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-8.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-9.ts
#EXTINF:7.56,
u-6400-m-720x408-1628-a-96-1-10.ts
#EXTINF:2.44,
u-6400-m-720x408-1628-a-96-1-11.ts
#EXT-X-DISCONTINUITY
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-1-2.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-2.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-3-2.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-4-2.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-5-1.ts
#EXT-X-DISCONTINUITY
#EXT-X-KEY:METHOD=AES-128,URI="key5.json?f=1041&s=0&p=1822791&m=1506045858",IV=0x000000000000000000000000001BD047
#EXTINF:9.72,
1041_6_1822791.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key6.json?f=1041&s=0&p=1822792&m=1506045858",IV=0x000000000000000000000000001BD048
#EXTINF:10,
1041_6_1822792.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key7.json?f=1041&s=0&p=1822793&m=1506045858",IV=0x000000000000000000000000001BD049
#EXTINF:10,
1041_6_1822793.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key8.json?f=1041&s=0&p=1822794&m=1506045858",IV=0x000000000000000000000000001BD04A
#EXTINF:10,
1041_6_1822794.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key9.json?f=1041&s=0&p=1822795&m=1506045858",IV=0x000000000000000000000000001BD04B
#EXTINF:10,
1041_6_1822795.ts?m=1506045858
#EXT-X-ENDLIST
-78
View File
@@ -1,78 +0,0 @@
#EXTM3U
#EXT-X-YOSPACE-ANALYTICS-URL:"https://csm-e-cebteurxaws416-2hjvnjz85og7.tls1.yospace.com/csm/analytics;jsessionid=E97CB20FD3BCE93F89ADDB12E8C82895.csm-e-cebteurxaws416-2hjvnjz85og7.tls1.yospace.com"
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-KEY:METHOD=AES-128,URI="key1.json?f=1041&s=0&p=1822767&m=1506045858",IV=0x000000000000000000000000001BD02F
#EXTINF:10,
1041_6_1822767.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key2.json?f=1041&s=0&p=1822768&m=1506045858",IV=0x000000000000000000000000001BD030
#EXTINF:10,
1041_6_1822768.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key3.json?f=1041&s=0&p=1822769&m=1506045858",IV=0x000000000000000000000000001BD031
#EXTINF:10,
1041_6_1822769.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key4.json?f=1041&s=0&p=1822770&m=1506045858",IV=0x000000000000000000000000001BD032
#EXTINF:6.28,
1041_6_1822770.ts?m=1506045858
#EXT-X-DISCONTINUITY
#EXT-X-KEY:METHOD=NONE
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-2.ts
#EXTINF:7.2,
u-6400-m-720x408-1628-a-96-1-3.ts
#EXTINF:2.8,
u-6400-m-720x408-1628-a-96-1-4.ts
#EXT-X-DISCONTINUITY
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-1-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-2-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-3-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-4-1.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-5.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-6.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-7.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-8.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-9.ts
#EXTINF:7.56,
u-6400-m-720x408-1628-a-96-1-10.ts
#EXTINF:2.44,
u-6400-m-720x408-1628-a-96-1-11.ts
#EXT-X-DISCONTINUITY
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-1-2.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-2.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-3-2.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-4-2.ts
#EXTINF:10,
u-6400-m-720x408-1628-a-96-1-5-1.ts
#EXT-X-DISCONTINUITY
#EXT-X-KEY:METHOD=AES-128,URI="key5.json?f=1041&s=0&p=1822791&m=1506045858",IV=0x000000000000000000000000001BD047
#EXTINF:9.72,
1041_6_1822791.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key6.json?f=1041&s=0&p=1822792&m=1506045858",IV=0x000000000000000000000000001BD048
#EXTINF:10,
1041_6_1822792.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key7.json?f=1041&s=0&p=1822793&m=1506045858",IV=0x000000000000000000000000001BD049
#EXTINF:10,
1041_6_1822793.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key8.json?f=1041&s=0&p=1822794&m=1506045858",IV=0x000000000000000000000000001BD04A
#EXTINF:10,
1041_6_1822794.ts?m=1506045858
#EXT-X-KEY:METHOD=AES-128,URI="key9.json?f=1041&s=0&p=1822795&m=1506045858",IV=0x000000000000000000000000001BD04B
#EXTINF:10,
1041_6_1822795.ts?m=1506045858
#EXT-X-ENDLIST
-78
View File
@@ -1,78 +0,0 @@
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:2.000000,
#EXT-X-BYTERANGE:501584@0
cisq0gim60007xzvi505emlxx.ts
#EXTINF:3.560000,
#EXT-X-BYTERANGE:1005424@501584
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.360000,
#EXT-X-BYTERANGE:567196@1507008
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:423752@2074204
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:434844@2497956
cisq0gim60007xzvi505emlxx.ts
#EXTINF:0.480000,
#EXT-X-BYTERANGE:128404@2932800
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:435408@3061204
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:488988@3496612
cisq0gim60007xzvi505emlxx.ts
#EXTINF:1.960000,
#EXT-X-BYTERANGE:482784@3985600
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:350620@4468384
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:328812@4819004
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.920000,
#EXT-X-BYTERANGE:677364@5147816
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:466804@5825180
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:532980@6291984
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:524144@6824964
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:517564@7349108
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.520000,
#EXT-X-BYTERANGE:647472@7866672
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:579228@8514144
cisq0gim60007xzvi505emlxx.ts
#EXTINF:0.600000,
#EXT-X-BYTERANGE:177284@9093372
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.760000,
#EXT-X-BYTERANGE:560052@9270656
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:395176@9830708
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:479024@10225884
cisq0gim60007xzvi505emlxx.ts
#EXTINF:2.000000,
#EXT-X-BYTERANGE:481468@10704908
cisq0gim60007xzvi505emlxx.ts
#EXTINF:0.080000,
#EXT-X-BYTERANGE:93812@11186376
cisq0gim60007xzvi505emlxx.ts
#EXT-X-ENDLIST
-43
View File
@@ -1,43 +0,0 @@
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:YES
#EXTINF:10,
130130211307_1.ts
#EXTINF:10,
130130211307_2.ts
#EXTINF:10,
130130211307_3.ts
#EXTINF:10,
130130211307_4.ts
#EXTINF:10,
130130211307_5.ts
#EXTINF:10,
130130211307_6.ts
#EXTINF:10,
130130211307_7.ts
#EXTINF:10,
130130211307_8.ts
#EXTINF:10,
130130211307_9.ts
#EXTINF:10,
130130211307_10.ts
#EXTINF:10,
130130211307_11.ts
#EXTINF:10,
130130211307_12.ts
#EXTINF:10,
130130211307_13.ts
#EXTINF:10,
130130211307_14.ts
#EXTINF:10,
130130211307_15.ts
#EXTINF:10,
130130211307_16.ts
#EXTINF:10,
130130211307_17.ts
#EXTINF:10,
130130211307_18.ts
#EXTINF:10,
130130211307_19.ts
#EXT-X-ENDLIST
-38
View File
@@ -1,38 +0,0 @@
#EXTM3U
#EXT-X-VERSION:1
## Created with Unified Streaming Platform(version=1.6.7)
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:11
#EXT-X-KEY:METHOD=AES-128,URI="oceans.key"
#EXTINF:11, no desc
oceans_aes-audio=65000-video=236000-1.ts
#EXTINF:7, no desc
oceans_aes-audio=65000-video=236000-2.ts
#EXTINF:7, no desc
oceans_aes-audio=65000-video=236000-3.ts
#EXTINF:8, no desc
oceans_aes-audio=65000-video=236000-4.ts
#EXTINF:10, no desc
oceans_aes-audio=65000-video=236000-5.ts
#EXTINF:6, no desc
oceans_aes-audio=65000-video=236000-6.ts
#EXTINF:9, no desc
oceans_aes-audio=65000-video=236000-7.ts
#EXTINF:7, no desc
oceans_aes-audio=65000-video=236000-8.ts
#EXTINF:9, no desc
oceans_aes-audio=65000-video=236000-9.ts
#EXTINF:8, no desc
oceans_aes-audio=65000-video=236000-10.ts
#EXTINF:8, no desc
oceans_aes-audio=65000-video=236000-11.ts
#EXTINF:8, no desc
oceans_aes-audio=65000-video=236000-12.ts
#EXTINF:6, no desc
oceans_aes-audio=65000-video=236000-13.ts
#EXTINF:9, no desc
oceans_aes-audio=65000-video=236000-14.ts
#EXTINF:5, no desc
oceans_aes-audio=65000-video=236000-15.ts
#EXT-X-ENDLIST
-17
View File
@@ -1,17 +0,0 @@
#EXTM3U
#EXT-X-VERSION:1
## Created with Unified Streaming Platform(version=1.6.7)
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=319060,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=304x128
oceans_aes-audio=65000-video=236000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=461100,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=384x160
oceans_aes-audio=65000-video=370000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=674160,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=544x224
oceans_aes-audio=65000-video=571000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=999580,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=736x304
oceans_aes-audio=65000-video=878000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1489300,CODECS="mp4a.40.2,avc1.66.30",RESOLUTION=960x400
oceans_aes-audio=65000-video=1340000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2233420,CODECS="mp4a.40.2,avc1.66.31",RESOLUTION=1264x528
oceans_aes-audio=65000-video=2042000.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=68900,CODECS="mp4a.40.2"
oceans_aes-audio=65000.m3u8
-17
View File
@@ -1,17 +0,0 @@
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="key.bin"
#EXTINF:6.016000,
segment-0.aac
#EXTINF:6.016000,
segment-1.aac
#EXTINF:6.016000,
segment-2.aac
#EXTINF:6.016000,
segment-3.aac
#EXTINF:5.482667,
segment-4.aac
#EXT-X-ENDLIST
-33
View File
@@ -1,33 +0,0 @@
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-I-FRAMES-ONLY
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="key.bin"
#EXTINF:8.400000,
#EXT-X-BYTERANGE:107724@376
segment-0.ts
#EXTINF:4.560000,
#EXT-X-BYTERANGE:38540@376
segment-1.ts
#EXTINF:3.120000,
#EXT-X-BYTERANGE:46060@176720
segment-1.ts
#EXTINF:5.640000,
#EXT-X-BYTERANGE:125208@376
segment-2.ts
#EXTINF:1.880000,
#EXT-X-BYTERANGE:89676@902964
segment-2.ts
#EXTINF:2.160000,
#EXT-X-BYTERANGE:125396@376
segment-3.ts
#EXTINF:2.080000,
#EXT-X-BYTERANGE:52076@232744
segment-3.ts
#EXTINF:1.680000,
#EXT-X-BYTERANGE:117688@627920
segment-3.ts
#EXT-X-ENDLIST
-14
View File
@@ -1,14 +0,0 @@
#EXTM3U
# Created with Bento4 mp4-hls.py version 1.2.0r637
#EXT-X-VERSION:4
# Audio
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio_aac",NAME="Unknown",LANGUAGE="und",AUTOSELECT=YES,DEFAULT=YES,URI="audio/aac/und/stream.m3u8"
# Media Playlists
#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1468268,BANDWIDTH=2051101,CODECS="avc1.4D401F,mp4a.40.2",RESOLUTION=1280x720,AUDIO="audio_aac"
media-1/stream.m3u8
# I-Frame Playlists
#EXT-X-I-FRAME-STREAM-INF:AVERAGE-BANDWIDTH=190343,BANDWIDTH=560419,CODECS="avc1.4D401F",RESOLUTION=1280x720,URI="media-1/iframes.m3u8"
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
{
}
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More