RGBベースの色相を変更できるhuesaturation
フィルタの使い方。YUVベースはhue
フィルタ。タイムライン編集に対応。
無音区間を調べるsilencedetect
映像の変化が少ないシーン区間を調べるfreezedetect
音声のノイズ低減フィルタanlmdn
映像のデノイズにもあるNon-Local Meansアルゴリズムを音声のノイズ低減に使う。こちらも処理負荷が高く効果は絶大。
低域を減退させるhighpassと広域を減退させるlowpass
3dBポイントの周波数でフィルタを適用する。フィルターは単極、または両極のいずれかが選択できる。フィルタのロールオフ(減衰傾度)は、1オクターブあたり6dB/極になる。周波数毎に無音にするにはsuperequalizer
フィルタなどを使う。
ピッチを任意の周波数に変更するasetrate
入力した音声のサンプリング周波数より高ければ高音に、低ければ低音に変える。出力周波数は変更した周波数に変わるのでオプションの-arか、aresample
フィルタで目的の周波数に変更する。
ピッチ変更はrubberband
フィルタでもできる。
サンプリング周波数を変えずにテンポとピッチを変える rubberband
色補正フィルタのgrayworld
異なる伝達関数に変換するときに使い、事前に線形変換が必要。ピクセルフォーマットはgbrpf32leになるので負荷はかなり大きい。
vulkanのハードウェア支援を受けた汎用フィルタlibplacebo
リサイズ、デバンディング、トーンマッピング、色相調整などができる外部ライブラリのlibplacebo
フィルタの使い方。パラメータが多いので一部を抜粋。
ffmpeg 5.0リリース
2022年4月5日に5.0.1がリリースされた。アップデート内容はフォーマット関係など修正ばかりで新しいフィルタは入ってない。5.1のリリース予定に音声のレイアウトAPI周りが大きく変わっている。
git.videolan.org Git – ffmpeg.git/commitdiff
git.videolan.org Git – ffmpeg.git/shortlog : n5.0.1
2022年1月15日に ffmpeg 5.0 Desitter(ウィレム・ド・ジッター)Lorentz(ヘンドリック・ローレンツ)がリリースされた。今回のリリースはメジャーアップデートとなり、4.4以降に追加された新機能の中からマスターにしか追加されていなかったフィルタやエンコーダ、デコーダ等の新機能が全て取り込まれた。
FFmpeg 5.0 "Lorentz" has been released 🎉:https://t.co/InguIIGeEJ
A summary of changes can be found here:https://t.co/e9U5l4cnQX
— FFmpeg (@FFmpeg) January 17, 2022
気になる新機能はハードウェア支援を受けて多様なフィルタが使えるlibplacebo
フィルタ、MacOS向けのVideoToolbox ProResエンコーダ、scale
フィルタ、-sオプションのslice threading対応、フィルタ内でファイル分割するsegment
フィルタなど。リリースノートにない部分ではDolby Vision RPUパース対応と、-readrateオプションで読み込み速度を任意に制限できる。
前回記事:ffmpeg 4.4 リリース
file宣言が不要なプロトコルconcatf
ffmpeg 4.5から使えるプロトコル。demuxerのconcatでつけている-f concat -safe 0や連結ファイルをまとめて記述したテキストのファイルの前に指定するfileも不要に連結できる。いつの間にか2ファイル以上連結しようとすると「Invalid data found when processing input」のエラーが出て連結できなくなっている。
基本コマンド
ffmpeg -i concatf:split.txt -c copy output
ffplay -i concatf:split.txt
ファイル毎に改行し、split.txtで使う特殊文字はバックスラッシュの\かシングルクオートの‘でエスケープする。
input.mp4 video/input.mp4 'C:\Users\owner\Desktop\input.mp4' C:/Users/owner/Desktop/input.mp4
concatして固定フレームレートに修正するにはsettsビットストリームフィルタを使う。Bフレームのある24000/1001フレームレートの修正例。
ffmpeg -i concatf:split.txt -c copy -bsf:v setts=dts=N/((24000/1001)*TB):pts=PTS+N/((24000/1001)*TB)-DTS output.mp4
Bフレームがなければ以下でもよい。
ffmpeg -i concatf:split.txt -c copy -bsf:v setts=N/((24000/1001)*TB) output.mp4