it works
This commit is contained in:
parent
cab52f32f9
commit
879832dbc9
3 changed files with 39 additions and 6 deletions
|
@ -738,6 +738,7 @@ function playlist( $filename, $segments ) {
|
|||
*/
|
||||
$lines = [];
|
||||
$lines[] = "#EXTM3U";
|
||||
$lines[] = "#EXT-X-VERSION:7";
|
||||
$lines[] = "#EXT-X-TARGETDURATION:10";
|
||||
$lines[] = "#EXT-MEDIA-SEQUENCE:0";
|
||||
$lines[] = "#EXT-PLAYLIST-TYPE:VOD";
|
||||
|
@ -750,10 +751,11 @@ function playlist( $filename, $segments ) {
|
|||
$n = count( $segments ) - 1;
|
||||
for ( $i = 0; $i < $n; $i++ ) {
|
||||
$segment = $segments[$i];
|
||||
$lines[] = "#EXTINF:{$segment['duration']}";
|
||||
$lines[] = "#EXTINF:{$segment['duration']},";
|
||||
$lines[] = "#EXT-X-BYTERANGE:{$segment['size']}@{$segment['start']}";
|
||||
$lines[] = $filename;
|
||||
}
|
||||
$lines[] = "#EXT-X-ENDLIST";
|
||||
|
||||
return implode( "\n", $lines );
|
||||
}
|
||||
|
|
27
fmp4.html
27
fmp4.html
|
@ -27,5 +27,32 @@
|
|||
<source type=application/vnd.apple.mpegurl src=fmp4.vp9-h264.m3u8>
|
||||
</video>
|
||||
|
||||
<h2>Component tracks</h2>
|
||||
|
||||
<p>HLS VP9 in fMP4:</p>
|
||||
<video controls width=640 height=360>
|
||||
<source type=application/vnd.apple.mpegurl src=fmp4.480p.vp9.mp4.m3u8>
|
||||
</video>
|
||||
|
||||
<p>HLS h.264 in fMP4:</p>
|
||||
<video controls width=640 height=360>
|
||||
<source type=application/vnd.apple.mpegurl src=fmp4.480p.h264.mp4.m3u8>
|
||||
</video>
|
||||
|
||||
<p>HLS Opus in fMP4:</p>
|
||||
<video controls width=640 height=360>
|
||||
<source type=application/vnd.apple.mpegurl src=fmp4.audio.opus.mp4.m3u8>
|
||||
</video>
|
||||
|
||||
<p>HLS AAC in fMP4:</p>
|
||||
<video controls width=640 height=360>
|
||||
<source type=application/vnd.apple.mpegurl src=fmp4.audio.aac.mp4.m3u8>
|
||||
</video>
|
||||
|
||||
<p>HLS MP3:</p>
|
||||
<video controls width=640 height=360>
|
||||
<source type=application/vnd.apple.mpegurl src=fmp4.audio.mpeg.mp3.m3u8>
|
||||
</video>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -28,33 +28,37 @@ while ( count( $argv ) > 0 ) {
|
|||
$name = 'English'; // @fixme use correct unknown marker
|
||||
$language = 'en-US'; // @fixme
|
||||
$channels = 2; // @fixme
|
||||
$uri = urlencode( $filename );
|
||||
$uri = urlencode( $playlist );
|
||||
$audio[$codec] = "#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID=\"$codec\",NAME=\"$name\",LANGUAGE=\"$language\",AUTOSELECT=YES,DEFAULT=YES,CHANNELS=\"$channels\",URI=\"$uri\"";
|
||||
} else {
|
||||
$bandwidth = 1250000; // @fixme
|
||||
$width = 854; // @fixme
|
||||
$height = 480; // @fixme
|
||||
$fps = 24.0; // @fixme
|
||||
$baseLine = "#EXT-X-STREAM-INFO:BANDWIDTH=$bandwidth,RESOLUTION={$width}x{$height},FRAME-RATE={$fps}";
|
||||
$baseLine = "#EXT-X-STREAM-INF:BANDWIDTH=$bandwidth,RESOLUTION={$width}x{$height},FRAME-RATE={$fps}";
|
||||
if ( count( $audio ) > 1 ) {
|
||||
foreach ( array_keys( $audio ) as $audioCodec ) {
|
||||
$codecs = implode( ',', [
|
||||
$videoCodecs[$codec],
|
||||
$audioCodecs[$audioCodec],
|
||||
] );
|
||||
$video[] = "$baseLine,CODECS=\"$codecs\"";
|
||||
$video[] = "$baseLine,CODECS=\"$codecs\",AUDIO=\"$audioCodec\"";
|
||||
$video[] = $playlist;
|
||||
}
|
||||
} else {
|
||||
$codecs = $videoCodecs[$codec];
|
||||
$video[] = "$baseLine,CODECS=\"$codecs\",AUDIO=\"$audioCodec\"";
|
||||
$video[] = "$baseLine,CODECS=\"$codecs\"";
|
||||
$video[] = $playlist;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$header = [
|
||||
'#EXTM3U',
|
||||
];
|
||||
|
||||
$lines = array_merge(
|
||||
[ '#EXTM3U' ],
|
||||
$header,
|
||||
array_values( $audio ),
|
||||
$video
|
||||
);
|
||||
|
|
Loading…
Reference in a new issue