ライブ動画のTS結合方法
高解像度側 現在のチャンク数を確認
$ curl https://live3.test.com/a/live_1080p30.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:1230
現在、1230までチャンク数が進んでいる。
最初から現在までのチャンクをダウンロード ( ユーザから見えるのはCloudFrontであるため、MediaStore経由ではなく、CloudFront経由で取得している。 特にライブ中はMediaStoreの制限にかかるケースがありえるので、直接の取得は避ける ) wgetコマンドでTSファイルを取得
作業ディレクトリ作成
mkdir -p ~/tmp/$(date +%Y%m%d)
cd ~/tmp/$(date +%Y%m%d)
ファイル取得
for num in $(seq -w 1 1230) ; do echo $num ; wget https://live3.test.com/a/live_1080p30_0${num}.ts ; done
ダウンロードしたファイルリスト作成
for num in $(seq -w 1 1230) ; do echo "file ./live_1080p30_0${num}.ts" >> file_list.txt ; done
結合
ffmpeg -f concat -safe 0 -i file_list.txt -c copy $(date +%Y%m%d).mp4
低解像度側 作業
ファイル取得
for num in $(seq -w 1 1230) ; do echo $num ; wget https://live3.test.com/a/live-lq_0${num}.ts ; done
ダウンロードしたファイルリスト作成
for num in $(seq -w 1 1050) ; do echo "file ./live-lq_0${num}.ts" >> lq_file_list.txt ; done
結合
ffmpeg -f concat -safe 0 -i lq_file_list.txt -c copy lq_$(date +%Y%m%d).mp4