FFmpeg メモ

オプションについて

-c(-codec)
は-vcodecと-acodecをまとめてという意味で、
それぞれ指定する場合、
-vcode -acode
または、
-c:v -c:a
と指定する。

ストリームについて

ffmpeg -i xxx
でファイルを読み込むとストリームが表示される。

Stream #0:0
0番目(読み込まれた順)ファイルのストリーム0番という意味。

0:v
は0番目ファイルの映像全て、
0:a
は0番目ファイルの音声全てと書くこともできる。

サンプル

・分割されたVOBファイルを結合する
copy /b VTS_01_1.VOB + VTS_01_2.VOB out.vob

・VOBファイルをMP4に変換
ffmpeg -i out.vob -b:v 4000k  -maxrate 8000k -c:v libx264 -c:a libmp3lame -b:a 256k -ar 44100 out.mp4

※CBR,VBRは下記3つの値の組み合わせで作る。
-b:v xxx -minrate xxx -maxrate xxx

・コーミングノイズ除去
ffmpeg -i i.mp4 -deinterlace o.mp4

・DVDに書き込む用の動画を作成
ffmpeg -i i.mp4 -target ntsc-dvd o.mpg

・スケール変更(アスペクト比維持)
ffmpeg -i i.mp4 -vf scale=1280:-1 o.mp4
(16:9のDVDは1280、4:3のDVDは720)

・部分的に切り出す
ffmpeg -ss スタート ポジション -i i.mp4 -t 切り出す長さ o.mp4

開始

終了

ffmpeg -ss 0 -i i.mp4 -t 0 o.mp4

・ファイルサイズを落とす
ffmpeg -i i.mp4 -vcodec libx264 -b:v 1000k -acodec libmp3lame -ab 192k o.mp4

・mp3に変換
ffmpeg -i i.mp4 -acodec libmp3lame -ab 256k o.mp3

・mp4の連結(ワンライナー)
(for %f in (*.mp4) do echo file %f >> i.txt) && ffmpeg -f concat -i i.txt -c copy out.mp4 && del i.txt

・結合
ffmpeg -i i.mp4 -i i.mp3 -c copy -map 0:v -map 1:a o.mp4
ストリーム指定が不要の場合、
ffmpeg -i i.mp4 -i i.mp3 -c copy o.mp4
でも可能。

・静止画とmp3の結合
ffmpeg -f image2 -loop 1 -r 24 -i i.jpg -i i.mp3 -vcodec libx264 -shortest o.mp4

・指定秒数でサムネイル
ffmpeg -ss 10 -i i.mp4 -vframes 1 -f image2 o.jpg

・m3u8を保存
ffmpeg -protocol_whitelist “file,http,https,tcp,tls” -i i.m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc o.mp4

・指定領域を切り抜き
ffmpeg -i i.mp4 -vf crop=W:H:L:T o.mp4

・ノーマライズ
ffmpeg -i i.mp4 -af “volumedetect” -f null NULL
で最大dBを確認し、
ffmpeg -i i.mp4 -af “volume=6dB” -c:v copy -c:a aac o.mp4
で指定する。

・ファイル結合時の音ズレ修正

音ズレをチェックする場合VLCが便利。(ツール>トラックの同期化)
ここでは-0.8s(音を映像に対して先行させる)で合うことを確認。
ffmpeg -i i.mp4 -itsoffset -0.8 -i i.mp3 -c copy o.mp4

・一つファイル内で音ズレ修正
ffmpeg -i i.flv -itsoffset -0.5 -i i.flv -c copy -map 0:v -map 1:a o.mp4