#!/bin/sh
set -eu
# Run in a fresh output directory with hls-gop90 and hls-gop60 subdirectories.
mkdir -p hls-gop90 hls-gop60
ffmpeg -hide_banner -loglevel error -nostdin -y -f lavfi -i testsrc2=size=320x180:rate=30:duration=8 -f lavfi -i sine=frequency=660:sample_rate=48000:duration=8 -map 0:v:0 -map 1:a:0 -c:v libx264 -preset medium -crf 23 -pix_fmt yuv420p -g 90 -keyint_min 90 -sc_threshold 0 -bf 0 -flags +cgop -threads:v 1 -c:a aac -b:a 64k -map_metadata -1 -t 8 ordinary-gop90.mp4
ffmpeg -hide_banner -loglevel error -nostdin -y -i ordinary-gop90.mp4 -map 0:v:0 -map 0:a:0 -c copy -movflags +faststart faststart-gop90.mp4
ffmpeg -hide_banner -loglevel error -nostdin -y -f lavfi -i testsrc2=size=320x180:rate=30:duration=8 -f lavfi -i sine=frequency=660:sample_rate=48000:duration=8 -map 0:v:0 -map 1:a:0 -c:v libx264 -preset medium -crf 23 -pix_fmt yuv420p -g 60 -keyint_min 60 -sc_threshold 0 -bf 0 -flags +cgop -threads:v 1 -c:a aac -b:a 64k -map_metadata -1 -t 8 aligned-gop60.mp4
ffmpeg -hide_banner -loglevel error -nostdin -y -i ordinary-gop90.mp4 -map 0:v:0 -map 0:a:0 -c copy -f hls -hls_time 2 -hls_list_size 0 -hls_playlist_type vod -hls_segment_type fmp4 -hls_flags independent_segments -hls_segment_filename hls-gop90/segment-%02d.m4s hls-gop90/index.m3u8
ffmpeg -hide_banner -loglevel error -nostdin -y -xerror -i hls-gop90/index.m3u8 -map 0:v:0 -map 0:a:0 -f null -
ffmpeg -hide_banner -loglevel error -nostdin -y -i aligned-gop60.mp4 -map 0:v:0 -map 0:a:0 -c copy -f hls -hls_time 2 -hls_list_size 0 -hls_playlist_type vod -hls_segment_type fmp4 -hls_flags independent_segments -hls_segment_filename hls-gop60/segment-%02d.m4s hls-gop60/index.m3u8
ffmpeg -hide_banner -loglevel error -nostdin -y -xerror -i hls-gop60/index.m3u8 -map 0:v:0 -map 0:a:0 -f null -
