iOS向け動画ページの動作確認の必要にせまられて作って作りました。
本番環境で使うならAWSのElastic transcoderが安くていい感じだけど、ちょっとしたテストならこれでいいかも・・・
シェルスクリプト
# !/bin/sh
ffmpeg -i $1 -profile:v baseline -level 3.0 -s 1280x780 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls high.m3u8
ffmpeg -i $1 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls medium.m3u8
ffmpeg -i $1 -profile:v baseline -level 3.0 -s 320x240 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls low.m3u8
echo '#EXTM3U' > index.m3u8
echo '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1883000,RESOLUTION=1280x720,CODECS="avc1.4d001f"' >> index.m3u8
echo 'high.m3u8' >> index.m3u8
echo '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1083000,RESOLUTION=640x480,CODECS="avc1.4d001f"' >> index.m3u8
echo 'medium.m3u8' >> index.m3u8
echo '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=458000,RESOLUTION=320x240,CODECS="avc1.42001f"' >> index.m3u8
echo 'low.m3u8' >> index.m3u8
使い方
上記のスクリプトを適当な名前で保存します。例えばconv.shとか
それで引数に変換したい動画を指定すればオーケー
$ conv.sh input.mp4
そうするとhigh、medium、lowの動画が出来上がる。
シミュレータにてiOS10.2で動作することは確認済みです。