This commit is contained in:
Brooke Vibber 2023-04-02 20:59:22 -07:00
commit 4dc40de805
93 changed files with 1 additions and 2511 deletions

1
.gitignore vendored
View file

@ -1,5 +1,6 @@
.DS_Store
*.log
*.mbtree
standalone-*.*
polyphon-*.*
new-*.*

View file

@ -1,36 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>3gp codecs test</title>
</head>
<body>
<h1>3gp codecs test</h1>
<p>H.263/AAC in 3GP: 96p</p>
<video id=flat controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-96p.3gp>
</video>
<p>H.263/AAC in 3GP: 144p</p>
<video id=flat2 controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-144p.3gp>
</video>
<p>H.263/AAC in 3GP: 288p</p>
<video id=flat controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-288p.3gp>
</video>
<p>H.263/AAC in 3GP: 576p</p>
<video id=flat controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-576p.3gp>
</video>
<p>H.263/AAC in 3GP: 1152p</p>
<video id=flat controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-1152p.3gp>
</video>
</body>
</html>

19
3gp.sh
View file

@ -1,19 +0,0 @@
#MOVFLAGS="-movflags +frag_keyframe+empty_moov+default_base_moof+faststart"
MOVFLAGS="-movflags +faststart"
BITRATE_HI="-b:v 3840k"
BITRATE_LO="-b:v 2560k"
VIDEO_H264="-vcodec h264 $BITRATE_HI"
VIDEO_H263="-vcodec h263 -b:v 1280k"
VIDEO_H263_PLUS="-vcodec h263p -b:v 1280k"
VIDEO_JPEG="-vcodec mjpeg"
VIDEO_VP8="-vcodec libvpx $BITRATE_HI"
VIDEO_VP9="-vcodec libvpx-vp9 -row-mt 1 $BITRATE_LO"
AUDIO_AAC="-acodec aac -ac 1 -ar 44100 -ab 112k"
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-96p.3gp':fontsize=72:fontcolor=orange, scale=128:96" $VIDEO_H263 -vb 64k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-96p.3gp || exit 1
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-144p.3gp':fontsize=72:fontcolor=brown, scale=176:144" $VIDEO_H263 -vb 384k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-144p.3gp || exit 1
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-288p.3gp':fontsize=72:fontcolor=yellow, scale=352:288" $VIDEO_H263 -vb 2048k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-288p.3gp || exit 1
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-576p.3gp':fontsize=72:fontcolor=red, scale=704:576" $VIDEO_H263 -vb 4096k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-576p.3gp || exit 1
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-1152p.3gp':fontsize=72:fontcolor=violet, scale=1408:1152" $VIDEO_H263 -vb 8192k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-1152p.3gp || exit 1

View file

@ -1,31 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>3gp codecs test 2</title>
</head>
<body>
<h1>3gp codecs test 2</h1>
<p>H.263/AAC in 3GP: 1M</p>
<video id=flat controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-1m.3gp>
</video>
<p>H.263/AAC in 3GP: 2M</p>
<video id=flat2 controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-2m.3gp>
</video>
<p>H.263/AAC in 3GP: 4M</p>
<video id=flat controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-4m.3gp>
</video>
<p>H.263/AAC in 3GP: 8Mp</p>
<video id=flat controls width=640 height=360>
<source type="video/3gpp" src=polyphon-h263-aac-8m.3gp>
</video>
</body>
</html>

12
3gp2.sh
View file

@ -1,12 +0,0 @@
#MOVFLAGS="-movflags +frag_keyframe+empty_moov+default_base_moof+faststart"
MOVFLAGS="-movflags +faststart"
VIDEO_H263="-vcodec h263"
VIDEO_H263_PLUS="-vcodec h263p"
AUDIO_AAC="-acodec aac -ac 1 -ar 44100 -ab 112k"
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-288p@1M.3gp':fontsize=72:fontcolor=brown, scale=352:288" $VIDEO_H263 -vb 1024k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-1m.3gp || exit 1
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-288p@2M.3gp':fontsize=72:fontcolor=yellow, scale=352:288" $VIDEO_H263 -vb 2048k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-2m.3gp || exit 1
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-288p@4M.3gp':fontsize=72:fontcolor=red, scale=352:288" $VIDEO_H263 -vb 4096k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-4m.3gp || exit 1
ffmpeg -i polyphon.ogv -vf "drawtext=text='h263-aac-288p@8M.3gp':fontsize=72:fontcolor=violet, scale=352:288" $VIDEO_H263 -vb 8192k $AUDIO_AAC $MOVFLAGS -y polyphon-h263-aac-8m.3gp || exit 1

View file

@ -1,51 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>HLS & flat MP4 ALAC test</title>
</head>
<body>
<h1>HLS & flat MP4 ALAC test</h1>
<p>VP9/ALAC in MP4 (HLS)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=combined-vp9-alac.m3u8>
</video>
<p>VP9/ALAC in MP4 (HLS, direct playlist)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=combined-vp9-alac-mp4.m3u8>
</video>
<p>VP9/ALAC in MP4 (flat)</p>
<video controls width=640 height=360>
<source type="video/mp4; codecs=&quot;vp09.00.10.08,alac&quot;"" src=polyphon-vp9-alac.mp4>
</video>
<script>
let codes = {
[MediaError.MEDIA_ERR_ABORTED]: 'MEDIA_ERR_ABORTED',
[MediaError.MEDIA_ERR_NETWORK]: 'MEDIA_ERR_NETWORK',
[MediaError.MEDIA_ERR_DECODE]: 'MEDIA_ERR_DECODE',
[MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED]: 'MEDIA_ERR_SRC_NOT_SUPPORTED',
};
function errify(hls, err) {
hls.addEventListener('error', function() {
let {code, message} = this.error;
let codeName = codes[code];
err.textContent = `${code} ${codeName}: ${message}`;
});
}
for (let hls of document.querySelectorAll('video')) {
let err = document.createElement('p');
if (hls.nextSibling) {
hls.parentNode.insertBefore(err, hls.nextSibling);
} else {
hls.parentNode.appendChild(err);
}
errify(hls, err);
}
</script>
</body>
</html>

View file

@ -1,16 +0,0 @@
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp09.00.10.08"
vp9-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp08.00.10.08"
vp8-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.60"
mpeg2-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.6a"
mpeg1-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.20.9"
m4v-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.6c"
jpeg-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.42e00a"
h264-in-mp4.m3u8

View file

@ -1,8 +0,0 @@
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp9"
vp9-in-webm.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp8"
vp8-in-webm.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.42e00a"
h264-in-mp4.m3u8

View file

@ -1,10 +0,0 @@
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp09.00.10.08"
vp9-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp9"
vp9-in-webm.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp8"
vp8-in-webm.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.42e00a"
h264-in-mp4.m3u8

View file

@ -1,8 +0,0 @@
#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:45
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:40.56,
polyphon-aac.mp4
#EXT-X-ENDLIST

View file

@ -1,8 +0,0 @@
#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:45
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:40.56,
polyphon-alac.mp4
#EXT-X-ENDLIST

View file

@ -1,8 +0,0 @@
#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:45
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:40.56,
polyphon-flac.mp4
#EXT-X-ENDLIST

View file

@ -1,8 +0,0 @@
#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:45
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:40.56,
polyphon-mp3.mp3
#EXT-X-ENDLIST

View file

@ -1,8 +0,0 @@
#EXTM3U
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:45
#EXT-X-VERSION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:40.56,
polyphon-opus.mp4
#EXT-X-ENDLIST

View file

@ -1,96 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>HLS WebM test with codec</title>
</head>
<body>
<h1>HLS WebM test with codec</h1>
<p>AAC in MP4</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-aac-mp4.m3u8>
</video>
<p>ALAC in MP4</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-alac-mp4.m3u8>
</video>
<p>FLAC in MP4</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-flac-mp4.m3u8>
</video>
<p>MP3 stream</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-mp3-mp4.m3u8>
</video>
<p>MP3 in MP4 (as mp4a.6b)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-mp3mp4-h264.m3u8>
</video>
<p>MP3 in MP4 (as mp4a.40.34)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-mp3mp4b-h264.m3u8>
</video>
<p>MP3 in MP4 (as mp3)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-mp3mp4c-h264.m3u8>
</video>
<p>Opus in MP4 (as mp4a.ad)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-opus-mp4.m3u8>
</video>
<p>Opus in MP4 (as opus)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-opusb-mp4.m3u8>
</video>
<p>Opus in MP4 (as Opus)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-opusc-mp4.m3u8>
</video>
<p>Vorbis in MP4 (as mp4a.dd.0)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-vorbis-mp4.m3u8>
</video>
<p>Vorbis in MP4 (as vorbis)</p>
<video controls width=640 height=360>
<source type=application/vnd.apple.mpegurl src=av-vorbisb-mp4.m3u8>
</video>
<script>
let codes = {
[MediaError.MEDIA_ERR_ABORTED]: 'MEDIA_ERR_ABORTED',
[MediaError.MEDIA_ERR_NETWORK]: 'MEDIA_ERR_NETWORK',
[MediaError.MEDIA_ERR_DECODE]: 'MEDIA_ERR_DECODE',
[MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED]: 'MEDIA_ERR_SRC_NOT_SUPPORTED',
};
function errify(hls, err) {
hls.addEventListener('error', function() {
let {code, message} = this.error;
let codeName = codes[code];
err.textContent = `${code} ${codeName}: ${message}`;
});
}
for (let hls of document.querySelectorAll('video')) {
let err = document.createElement('p');
if (hls.nextSibling) {
hls.parentNode.insertBefore(err, hls.nextSibling);
} else {
hls.parentNode.appendChild(err);
}
errify(hls, err);
}
</script>
</body>
</html>

View file

@ -1,6 +0,0 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a1",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="audio-aac.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.42e00a,mp4a.40.02",AUDIO="a1"
h264-in-mp4.m3u8

View file

@ -1,18 +0,0 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a1",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="audio-aac.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp09.00.10.08,mp4a.40.02",AUDIO="a1"
vp9-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp08.00.10.08,mp4a.40.02",AUDIO="a1"
vp8-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.61,mp4a.40.02",AUDIO="a1"
mpeg2-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.6a,mp4a.40.02",AUDIO="a1"
mpeg1-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.20.9,mp4a.40.02",AUDIO="a1"
m4v-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.6c,mp4a.40.02",AUDIO="a1"
jpeg-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.42e00a,mp4a.40.02",AUDIO="a1"
h264-in-mp4.m3u8

View file

@ -1,14 +0,0 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a1",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="audio-aac.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.61,mp4a.40.02",AUDIO="a1"
mpeg2-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.6a,mp4a.40.02",AUDIO="a1"
mpeg1-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.20.9,mp4a.40.02",AUDIO="a1"
m4v-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="mp4v.6c,mp4a.40.02",AUDIO="a1"
jpeg-in-mp4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="avc1.42e00a,mp4a.40.02",AUDIO="a1"
h264-in-mp4.m3u8

View file

@ -1,6 +0,0 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a1",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="audio-aac.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp08,mp4a.40.02",AUDIO="a1"
vp8-in-mp4.m3u8

View file

@ -1,6 +0,0 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="a1",NAME="English",LANGUAGE="en-US",AUTOSELECT=YES,DEFAULT=YES,CHANNELS="2",URI="audio-aac.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=4785000,RESOLUTION=1920x1080,FRAME-RATE=29.970,CODECS="vp09.00.10.08,mp4a.40.02",AUDIO="a1"
vp9-in-mp4.m3u8

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