動画編集
FFmpeg を使った動画編集の備忘録です。日々進化する奥の深い無料の万能変換プログラムですが、トリミング・クロップ・静止画 のような基本操作だけでも重宝します。
前提
OS
Windows11 home 23H2 (Intel Core i5-1035G1 1GHz 8GB)
FFmpeg
version 7.0.2-full_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
FFmpeg インストール
FFmpegの公式ページ https://ffmpeg.org/ の Download → Windows EXE Files → Windows builds from gyan.dev から 現時点で最新の「ffmpeg-7.0.2-full_build.7z」を ダウンロード・展開します。次のように配置した場合
C:\
└─Program Files
└─ffmpeg
└─ffmpeg-7.0.2-full_build
├─bin
│ ffmpeg.exe
│ ffplay.exe
│ ffprobe.exe
├─doc
└─presets
コマンドプロンプトで
> set PATH="C:\Program Files\ffmpeg\ffmpeg-7.0.2-full_build\bin";%PATH%
とすれば 「ffmpeg」だけで実行できます。
アンインストールは、展開したフォルダごと削除するだけです。
動画
編集対象の動画は、Win + Alt + R キーでキャプチャした全画面表示のカレントウィンドウです。こちらで紹介した Android Studio の エミュレーターの様子です。ファイル名「org.mp4」で保存した場合 次のコマンドで詳細情報を確認できます。
> ffprobe -i org.mp4
ffprobe version 7.0.2-full_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developers
built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
libavutil 59. 8.100 / 59. 8.100
libavcodec 61. 3.100 / 61. 3.100
libavformat 61. 1.100 / 61. 1.100
libavdevice 61. 1.100 / 61. 1.100
libavfilter 10. 1.100 / 10. 1.100
libswscale 8. 1.100 / 8. 1.100
libswresample 5. 1.100 / 5. 1.100
libpostproc 58. 1.100 / 58. 1.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'org.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp41isom
creation_time : 2024-10-26T20:49:29.000000Z
artist : Microsoft Game DVR
title : Running Devices - Flappy Crow Free
★★★
Duration: 00:02:10.93, start: 0.000000, bitrate: 8678 kb/s
Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(progressive), 1920x1040 [SAR 1:1 DAR 24:13], 8486 kb/s, 25.71 fps, 60 tbr, 30k tbn (default)
★★★
Metadata:
creation_time : 2024-10-26T20:49:29.000000Z
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : AVC Coding
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2024-10-26T20:49:29.000000Z
handler_name : SoundHandler
vendor_id : [0][0][0][0]
ログを見る習慣が無いと映画マトリックスかと思うかもしれませんが、見るところは★★★の辺りです。
Duration: 00:02:10.93
が時間の長さです。
Stream: ・・・ 1920x1040
がサイズです。
最初に次の処理をお勧めします。多くの場合 サイズが小さくなります。
> ffmpeg -i org.mp4 out.mp4
「ffmpeg」:ffmpegコマンド
「-i org.mp4」:対象の入力ファイル名
「out.mp4」:処理後の出力ファイル名
加工例
指定位置までトリミング
> ffmpeg -i org.mp4 -to 45 out.mp4
45秒から末尾を除去
指定位置からトリミング
> ffmpeg -i org.mp4 -ss 15 out.mp4
先頭から15秒まで除去
> ffmpeg -i org.mp4 -ss 15 -to 45 out.mp4
上記を同時に処理し 30秒間
> ffmpeg -i org.mp4 -ss 15 -t 30 out.mp4
これも同じに
クロップ
> ffmpeg -i org.mp4 -vf crop=776:653:571:146 out.mp4
XY座標 571,146 から 幅W 776 高さH 653 を切り取り
動画 → 静止画
> ffmpeg -ss 0 -i org.mp4 -vframes 1 out.png
0秒(先頭)から 1フレームを pngファイルに保存
> ffmpeg -ss 3 -i org.mp4 -vframes 9 -r 1 out%05d.png
3秒後から1秒ごとに9フレームを png連番ファイルに保存
「-r 1」:フレームレート1[fps]
動画 → アニメーションgif
> ffmpeg -i org.mp4 -vf scale=.300:-1 out.gif
拡張子gifだけでアニメーションになりますが、ファイルサイズが大きくなるので縦横比維持(-1)して幅300に縮小しています。
終わり
ホームページ等へ公開する例です。HTML5なら
<video src="./out.mp4" controls autoplay muted loop></video>
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?