#author("2025-07-11T00:42:03+09:00","default:admin","admin") #author("2025-07-11T00:44:25+09:00","default:admin","admin") &size(24){ffmpegの使い方Tips}; #contents * ffmpegとは [#y2d25c0d] - 動画ファイルをアレコレするコマンドラインツール -- エンコード(圧縮)したり -- 画枠サイズを変更したり -- ビットレートを変更したり -- エンコード方式を変換したり -- コンテナ方式を変換したり -- 前半と後半で分割したり -- 音と映像を分離抽出したり -- 音と映像をまとめたり - WindowsやLinux、Macのコンソールでコマンドを打って動かすもの -- GUIのフロントエンドもあるらしいけど、それはすでに動画編集アプリだ - デジタルビデオに関する基本的な知識は必須 - 多くの動画編集アプリとかのエンジンとしても使われている - ここより詳しい説明はこちら(ここは自分用のよく使うコマンドのメモです)~ https://ja.wikipedia.org/wiki/FFmpeg - 取得は公式のこちらから~ https://ffmpeg.org/ * 基本 [#h0f8ed10] ffmpeg 入力オプション -i 入力ファイル名 出力オプション 出力ファイル名 * リサイズ、ビットレート変換 [#i3f115bb] - 出力を(FHDから)720P HDに縮小 - ビデオ 8Mbps - オーディオ そのまま - h.264エンコード AMD GPU使用(nVIDIAを使っている場合は_amfを_nvencに書き換える) ffmpeg -i INPUT.mp4 -vf scale=-1:720 -vcodec h264_amf -b:v 8000k -acodec copy OUTPUT.mp4 * コンテナ変換(MKVからMP4へ) [#cd81f782] ffmpeg -i INPUT.mkv -vcodec copy OUTPUT.mp4 * h.265へ変換(ファイル容量が約半分になる) [#j671e660] - クオリティは継承 - 画枠サイズやオーディオはそのまま - 処理にnVIDIA GPUを使う ffmpeg -i INPUT.mp4 -vcodec hevc_nvenc OUTPUT.mp4 - ビットレート指定(例:ビデオ 8M、オーディオ 256k) - 処理にnVIDIA GPUを使う ffmpeg -i INPUT.mp4 -vcodec hevc_nvenc -b:v 8000k -acodec aac -b:a 256k OUTPUT.mp4 * オーディオをノーマライズ [#x5f2aa62] 入力されたファイルを解析して、次の条件でオーディオをノーマライズする - ビデオは触らずコピー - 出力サンプリング周波数:48KHz - 出力ビットレート:256Kbps - ラウドネス:LKFS -16dB - トゥルーピーク:-1.5dB ffmpeg -i INPUT.mp4 -c:v copy -af loudnorm=I=-16:LRA=11:TP=-1.5 -b:a 256k -ar 48000 OUTPUT.mp4 * ファイル分割 [#uae19f5a] - あらゆるファイルを指定時間で分割ができる(例では頭から5分30秒の場所で前後に分割して2つのファイルに出力) ffmpeg -i INPUT.mp4 -t 00:05:30 -c copy part1.mp4 -ss 00:05:30 -c copy part2.mp4 * ファイル切り出し [#dcb6a2d3] - 先頭からの時間(00:05:30)と、そこからの長さ(00:12:45)を指定して切り出す ffmpeg -i INPUT.mp4 -ss 00:05:30 -c copy -t 00:12:45 OUTPUT.mp4 * DVDのVOBからMP4へ変換 [#b84b5f04] - VOBを連結する~ copy /b VTS_03_0.VOB+VTS_03_1.VOB+VTS_03_2.VOB+VTS_03_3.VOB+VTS_03_4.VOB VTS.VOB - ffmpegで変換~ ffmpeg -i VTS.VOB -c:v libx264 -filter:v yadif -vprofile high -vlevel 3.1 -b:v 4000k -ac 2 -c:a OUTPUT.mp4 - オプションの説明 -- -c:v libx264(CPUを使用してh.264にエンコード) -- -b:v4000k(ビデオのビットレート) -- -ac 2(STEREOにダウンミックス) -- -c:a(オーディオコーデックはAAC) * 静止画1枚から指定の長さの動画を作る [#w7852354] ffmpeg -loop 1 -r 60 -i picture.png -vcodec h264_nvenc -pix_fmt yuv420p -t 600 OUTPUT.mp4 - nフレーム目をループ(-loop):1 - 入力画像(-i):picture.png~ 1920x1080の画像ファイル - 動画FPS(-r):60 - コーデック(-vcodec):h.264(NVIDIAのエンコーダー使用) - 生成時間(-t):600秒 - ピクセルフォーマット(-pix_fmt):yuv420p(動画用のYUV色差で4-2-0) - 出力ファイル:out.mp4 * 動画ファイルから音声のみをmp3で書き出す [#d1fe156b] ffmpeg -i [SOURCE.mp4] -c:a mp3 -b:a 128k [OUT.mp3] SOURCE.mp4ファイルから、コーデックMP3、ビットレート128Kの設定でOUT.mp3に書き出す * 各種オプション [#o84d850c] - -vcodec (コーデックの指定) -- -vcodec copy~ ソースと同じ -- -vcodec h264_amf~ h.264 AMD GPU使用 -- -vcodec hevc_amf~ h.265 AMD GPU使用 -- -vcodec h264_nvenc~ h.264 NVIDIA GPU使用 -- -vcodec hevc_nvenc~ h.265 NVIDIA GPU使用 - -vf scale -- -vf scale=-1:720~ 垂直720指定、水平自動、アスペクト比保持 (FHDをHDの720pにリサイズするときに使う) - -b:v 8000k~ ビデオのビットレート指定(8Mbps) - -acodec copy (-c:a copy も同じ)~ オーディオのコーデック指定(そのまま元と同じ規格) - -b:a 128k~ オーディオのビットレート指定(128Kbps) * コマンド例 [#nae69e05] - ビデオコーデックをHEVC(h.265)の8MbpsにnVIDIA GPUでトランスコーディングし、オーディオをノーマライズしてAACの256Kにする ffmpeg -i INPUT.mp4 -c:v hevc_nvenc -b:v 8000k -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:a aac -b:a 256k -ar 48000 OUTPUT.mp4 af(オーディオフィルタ)の後ろがノーマライズ時に指定しているラウドネスパラメータ。~ ラウドネス目標LKFSを-16dB、音量大小の幅LRAを11dBに、最大絶対値音量を-1.5dBにしてます~ この値はITU BS1770規格にて、放送局向けの参考値として提唱されている数字からアレンジしています。~ ※ラウドネスとは、人間の聴感特性を考慮した音量感(音圧)を基準として数値化定義したものです。ここでは単純に物理的なレベルだけで評価せず、ラウドネスでノーマライズ(音量の均一化)をしています。曲同士、曲とトークの関係、これらを聞きやすくなるように揃えています。 - 上のモバイル向け(h624 720p aac 192k Normalize) ffmpeg -i INPUT.mp4 -vf scale=-1:720 -c:v h264_nvenc -b:v 4000k -af loudnorm=I=-16:LRA=11:TP=-1.5 -c:a aac -b:a 192k -ar 48000 OUTPUT.mp4