技術メモ

役に立てる技術的な何か、時々自分用の覚書。幅広く色々なことに興味があります。

ffmpegを使って.m3u8(ストリーミング形式ファイル)の動画を.mp4形式で保存する

シェルスクリプトを書いた。

注意

使っていたffmpegのバージョンが少し古かった。最新版ではできない可能性もある。

ffmpeg version 2.8.4 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 5.2.0 (GCC)

スクリプト

ファイルの名前は適当でいいが、例えば convert_m3u8_to_mp4.sh として保存

echo "filename: $1"
echo -n "input quality (default:20) => "
read QUALITY

ffmpeg -i $1 -bsf:a aac_adtstoasc -vcodec copy -c copy -crf ${QUALITY:=20} ${1%.*}".mp4"

実行例

sh convert_m3u8_to_mp4.sh test.m3u8

と引数に変換したいm3u8ファイルを指定。

input quality (default:20) =>

と聞かれるので、動画の品質を指定。
crf値と品質の関係は以下のようなサイトを参考に。
x264のcrf値はどれくらいが適切なのか? | もにっき
http://www.kurobuti.com/blog/?p=2131

うまく最後まで実行されればm3u8ファイルと同じ名前のmp4ファイルができるはず。
(つまり実行例の例で言うとtest.mp4)

ffmpegを使って動画のトリミング

ffmpeg -ss 00:00:30.0 -i input.wmv -c copy -t 00:00:10.0 output.wmv
  • -ssで開始時点を指定

終了タイミングを指定するのは、動画の長さを指定するか終了時点を指定する二つの方法がある。

  • -tでトリミングする動画の時間長さを指定
  • -toで終了時点を指定

command line - Using ffmpeg to cut up video - Super User