diff --git a/extract-playlist.php b/extract-playlist.php index dfefbb2..d326518 100644 --- a/extract-playlist.php +++ b/extract-playlist.php @@ -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 ); } diff --git a/fmp4.html b/fmp4.html index 36233d0..f91eceb 100644 --- a/fmp4.html +++ b/fmp4.html @@ -27,5 +27,32 @@ +

Component tracks

+ +

HLS VP9 in fMP4:

+ + +

HLS h.264 in fMP4:

+ + +

HLS Opus in fMP4:

+ + +

HLS AAC in fMP4:

+ + +

HLS MP3:

+ + \ No newline at end of file diff --git a/meta-playlist.php b/meta-playlist.php index c5c4e93..b5f7601 100644 --- a/meta-playlist.php +++ b/meta-playlist.php @@ -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 );