Skip to content

Instantly share code, notes, and snippets.

@yoggy
Last active October 31, 2020 07:44
Show Gist options
  • Save yoggy/26d538fe600ca72f694e70554b104d8f to your computer and use it in GitHub Desktop.
Save yoggy/26d538fe600ca72f694e70554b104d8f to your computer and use it in GitHub Desktop.

ffmpegのメモ.md

連番動画→mp4 (H265)

H.264 → libx264、H.265 → libx265 に対応。

$ ffmpeg -framerate 30 -i path/to/dir/%05d.png -vcodec libx265 -pix_fmt yuv420p -r 30 output.mp4

リサイズ (-1は縦横比を合わせる指定)

$ ffmpeg -framerate 30 -i path/to/dir/%05d.png -vf scale=320:-1 -vcodec libx265 -pix_fmt yuv420p -r 30 output.mp4

品質 (固定品質, crfの数値が小さくなると高品質。デフォルトは23)

$ ffmpeg -framerate 30 -i path/to/dir/%05d.png -vf scale=320:-1 -vcodec libx265 -crf 10 -pix_fmt yuv420p -r 30 output.mp4

連番インデックスの途中から始める (-start_number)

$ ffmpeg -r 30 -start_number 2782 -i "DSC%05d.JPG" -vcodec libx264 -pix_fmt yuv420p -r 30 output.mp4

動画→gifアニメ

$ ffmpeg -i input.mp4 -vf scale=320:-1 -r 15 output.gif

カラーパレットを使う方法。きれいにgifアニメができる

$ ffmpeg -i input.mp4 -vf "palettegen" -y palette.png
$ ffmpeg -i input.mp4 -i palette.png -lavfi "fps=15,scale=320:-1:flags=lanczos [x]; [x][1:v] paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" -y output.gif

時間を指定する(3秒目から10秒間)

$ ffmpeg -i input.mp4 -vf "palettegen" -y palette.png
$ ffmpeg -i input.mp4 -i palette.png -ss 3 -t 10 -lavfi "fps=10,scale=320:-1:flags=lanczos [x]; [x][1:v] paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" -y output.gif

5倍速再生 (PTF/5.0)

$ ffmpeg -i input.mp4 -vf "palettegen" -y palette.png
$ ffmpeg -i input.mp4 -i palette.png -lavfi "fps=%5,scale=640:-1:flags=lanczos,setpts=PTS/5.0 [x]; [x][1:v] paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" -y output.gif

動画から1フレームだけ画像を取り出す

$ ffmpeg -i input.mp4 -ss 秒数 -frames:v 1 image.png

音を消す

$ ffmpeg -i input.mp4 -vcodec copy -an output.mp4

まとめて変換例

#!/usr/bin/ruby

Dir.glob("*.mp4").sort.each do |src|
  dst = File.basename(src, ".mp4") + ".m4v"
  cmd = "ffmpeg -i #{src} -vcodec libx264 -crf 20 -pix_fmt yuv420p -r 30 -an #{dst}"
  puts "exec :  #{cmd}"
  system(cmd)
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment