mp3 and mjpeg tests
mjpeg in mov is not working in hls with multiple segments on ios mp3 raw with id3 timestamps works best on ios hls mp3 in ts works on ios, but seems stuttery weirdly! mp3 in mp4 just don't work
This commit is contained in:
parent
fd16b56eb6
commit
70d6c7366a
2 changed files with 113 additions and 26 deletions
|
@ -3,37 +3,53 @@
|
||||||
#EXT-X-TARGETDURATION:10
|
#EXT-X-TARGETDURATION:10
|
||||||
#EXT-X-MEDIA-SEQUENCE:0
|
#EXT-X-MEDIA-SEQUENCE:0
|
||||||
#EXT-X-PLAYLIST-TYPE:VOD
|
#EXT-X-PLAYLIST-TYPE:VOD
|
||||||
#EXT-X-MAP:URI="init.mp4"
|
#EXT-X-MAP:URI="caminandes-llamigos.webm.audio.mp3.mp4.mp4",BYTERANGE="755@0"
|
||||||
#EXTINF:10.005397,
|
#EXTINF:10.005896,
|
||||||
caminandes-llamigos.webm.audio.mp3.0000.mp4
|
#EXT-X-BYTERANGE:163302@755
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
#EXTINF:10.004898,
|
#EXTINF:10.004898,
|
||||||
caminandes-llamigos.webm.audio.mp3.0001.mp4
|
#EXT-X-BYTERANGE:163302@164057
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
#EXTINF:10.004898,
|
#EXTINF:10.004898,
|
||||||
caminandes-llamigos.webm.audio.mp3.0002.mp4
|
#EXT-X-BYTERANGE:163303@327359
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
|
#EXTINF:10.004580,
|
||||||
|
#EXT-X-BYTERANGE:163302@490662
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
|
#EXTINF:10.005057,
|
||||||
|
#EXT-X-BYTERANGE:163302@653964
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
|
#EXTINF:9.978617,
|
||||||
|
#EXT-X-BYTERANGE:162877@817266
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
|
#EXTINF:10.005215,
|
||||||
|
#EXT-X-BYTERANGE:163302@980143
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
#EXTINF:10.004898,
|
#EXTINF:10.004898,
|
||||||
caminandes-llamigos.webm.audio.mp3.0003.mp4
|
#EXT-X-BYTERANGE:163303@1143445
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
#EXTINF:10.004898,
|
#EXTINF:10.004898,
|
||||||
caminandes-llamigos.webm.audio.mp3.0004.mp4
|
#EXT-X-BYTERANGE:163302@1306748
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
|
#EXTINF:10.004739,
|
||||||
|
#EXT-X-BYTERANGE:163302@1470050
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
#EXTINF:9.978776,
|
#EXTINF:9.978776,
|
||||||
caminandes-llamigos.webm.audio.mp3.0005.mp4
|
#EXT-X-BYTERANGE:162877@1633352
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
|
#EXTINF:10.005057,
|
||||||
|
#EXT-X-BYTERANGE:163302@1796229
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
|
#EXTINF:10.004739,
|
||||||
|
#EXT-X-BYTERANGE:163302@1959531
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
|
#EXTINF:10.005057,
|
||||||
|
#EXT-X-BYTERANGE:163303@2122833
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
#EXTINF:10.004898,
|
#EXTINF:10.004898,
|
||||||
caminandes-llamigos.webm.audio.mp3.0006.mp4
|
#EXT-X-BYTERANGE:163302@2286136
|
||||||
#EXTINF:10.004898,
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
caminandes-llamigos.webm.audio.mp3.0007.mp4
|
|
||||||
#EXTINF:10.004898,
|
|
||||||
caminandes-llamigos.webm.audio.mp3.0008.mp4
|
|
||||||
#EXTINF:10.004898,
|
|
||||||
caminandes-llamigos.webm.audio.mp3.0009.mp4
|
|
||||||
#EXTINF:9.978776,
|
|
||||||
caminandes-llamigos.webm.audio.mp3.0010.mp4
|
|
||||||
#EXTINF:10.004898,
|
|
||||||
caminandes-llamigos.webm.audio.mp3.0011.mp4
|
|
||||||
#EXTINF:10.004898,
|
|
||||||
caminandes-llamigos.webm.audio.mp3.0012.mp4
|
|
||||||
#EXTINF:10.004898,
|
|
||||||
caminandes-llamigos.webm.audio.mp3.0013.mp4
|
|
||||||
#EXTINF:10.004898,
|
|
||||||
caminandes-llamigos.webm.audio.mp3.0014.mp4
|
|
||||||
#EXTINF:0.119819,
|
#EXTINF:0.119819,
|
||||||
caminandes-llamigos.webm.audio.mp3.0015.mp4
|
#EXT-X-BYTERANGE:2270@2449438
|
||||||
|
caminandes-llamigos.webm.audio.mp3.mp4.mp4
|
||||||
#EXT-X-ENDLIST
|
#EXT-X-ENDLIST
|
||||||
|
|
|
@ -40,6 +40,8 @@ class Audio {
|
||||||
'-b:a', '96k',
|
'-b:a', '96k',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
// with the added id3 timestamps this work great with iOS HLS
|
||||||
|
// but mac safari doesn't seem happy with anything i do with them
|
||||||
'mp3' => [
|
'mp3' => [
|
||||||
'container' => 'mp3',
|
'container' => 'mp3',
|
||||||
'options' => [
|
'options' => [
|
||||||
|
@ -49,6 +51,27 @@ class Audio {
|
||||||
'-b:a', '128k',
|
'-b:a', '128k',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
// works on iOS HLS but seems stuttery? i dunno why
|
||||||
|
// mac safari doesn't seem to like it either
|
||||||
|
'mp3.ts' => [
|
||||||
|
'container' => 'ts',
|
||||||
|
'options' => [
|
||||||
|
'-acodec', 'libmp3lame',
|
||||||
|
'-ar', 44100,
|
||||||
|
'-ac', 2,
|
||||||
|
'-b:a', '128k',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
// no dice on ios or macos safari
|
||||||
|
'mp3.mp4' => [
|
||||||
|
'container' => 'mp4',
|
||||||
|
'options' => [
|
||||||
|
'-acodec', 'libmp3lame',
|
||||||
|
'-ar', 44100,
|
||||||
|
'-ac', 2,
|
||||||
|
'-b:a', '128k',
|
||||||
|
],
|
||||||
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,6 +83,25 @@ class Video {
|
||||||
];
|
];
|
||||||
|
|
||||||
public const FORMATS = [
|
public const FORMATS = [
|
||||||
|
'mjpeg' => [
|
||||||
|
// it doesn't seem to like this after all. worth trying!
|
||||||
|
'container' => 'mov',
|
||||||
|
'options' => [
|
||||||
|
'common' => [
|
||||||
|
'-vcodec', 'mjpeg',
|
||||||
|
],
|
||||||
|
'fallback' => [
|
||||||
|
// no specific options :D
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'resolutions' => [
|
||||||
|
'144p' => [
|
||||||
|
'width' => 176,
|
||||||
|
'height' => 144,
|
||||||
|
'bitrate' => '1024k',
|
||||||
|
]
|
||||||
|
]
|
||||||
|
],
|
||||||
'vp9' => [
|
'vp9' => [
|
||||||
'container' => 'mp4',
|
'container' => 'mp4',
|
||||||
'options' => [
|
'options' => [
|
||||||
|
@ -222,6 +264,30 @@ class Transcoder {
|
||||||
'-hls_segment_filename', $segment,
|
'-hls_segment_filename', $segment,
|
||||||
'-y', $playlist,
|
'-y', $playlist,
|
||||||
];
|
];
|
||||||
|
} elseif ( $container == 'ts' ) {
|
||||||
|
$segment = "$outfile.$container";
|
||||||
|
$segmentOptions = [
|
||||||
|
'-f', 'hls',
|
||||||
|
'-hls_segment_type', 'mpegts',
|
||||||
|
'-hls_flags', 'single_file',
|
||||||
|
'-hls_time', '10',
|
||||||
|
'-hls_playlist_type', 'vod',
|
||||||
|
'-hls_segment_filename', $segment,
|
||||||
|
'-y', $playlist,
|
||||||
|
];
|
||||||
|
} elseif ( $container == 'mov' ) {
|
||||||
|
// For MJPEG, MP4 doesn't work in Apple HLS for some reason
|
||||||
|
// but QuickTime is sortof ok for one segment?
|
||||||
|
// Note segment won't make single fMP4-style files though.
|
||||||
|
$segment = "$outfile.%04d.$container";
|
||||||
|
$segmentOptions = [
|
||||||
|
'-f', 'segment',
|
||||||
|
//'-segment_format_options', 'movflags=frag_keyframe+empty_moov',
|
||||||
|
//'-segment_format_options', 'movflags=+frag_keyframe+empty_moov+default_base_moof+faststart',
|
||||||
|
'-segment_time', '10',
|
||||||
|
'-segment_list', $playlist,
|
||||||
|
'-y', $segment
|
||||||
|
];
|
||||||
} elseif ( $container == 'mp3' ) {
|
} elseif ( $container == 'mp3' ) {
|
||||||
// For MP3, segment it raw.
|
// For MP3, segment it raw.
|
||||||
// We'll need to postprocess to add an ID3 tag with timestamp
|
// We'll need to postprocess to add an ID3 tag with timestamp
|
||||||
|
@ -309,6 +375,11 @@ foreach ( $infiles as $filename ) {
|
||||||
$codec->audio('aac');
|
$codec->audio('aac');
|
||||||
$codec->audio('opus');
|
$codec->audio('opus');
|
||||||
$codec->audio('mp3');
|
$codec->audio('mp3');
|
||||||
|
$codec->audio('mp3.ts');
|
||||||
|
$codec->audio('mp3.mp4');
|
||||||
|
foreach ( Video::FORMATS['mjpeg']['resolutions'] as $res => $format ) {
|
||||||
|
$codec->video('mjpeg', $res, 'fallback');
|
||||||
|
}
|
||||||
foreach ( Video::FORMATS['vp9']['resolutions'] as $res => $format ) {
|
foreach ( Video::FORMATS['vp9']['resolutions'] as $res => $format ) {
|
||||||
if ( $format['width'] <= $source->width && $format['height'] <= $source->height ) {
|
if ( $format['width'] <= $source->width && $format['height'] <= $source->height ) {
|
||||||
$codec->video('vp9', $res, 'fast');
|
$codec->video('vp9', $res, 'fast');
|
||||||
|
|
Loading…
Reference in a new issue