FFmpegのオーディオフィルタの本を頒布した技術書典9を振り返る

#技術書典 「刺され!技術書アワード」の最終候補作品に選ばれた。

前回参加記事
FFmpegの本を頒布した技術書典7を振り返る

告知記事
技術書典9でFFmpegのオーディオフィルタ本が出ます

サークルページ
ニコラボ | 技術書典

新刊。BOOTH版は目次の頭文字数字の項目を直している。どちらも同じ価格で決済手段が異なる。技術書典は差し替えに再審査が必要なので差し替えていない。

FFmpegのオーディオフィルタの本:ニコラボ | 技術書典
【PDF】FFmpegのオーディオフィルタの本 – ニコラボの本屋 – BOOTH

現在技術書典内では電子版と物理本は販売終了し、電子版は一時的に販売停止になっている

Continue reading “FFmpegのオーディオフィルタの本を頒布した技術書典9を振り返る”

映像のエントロピーを調べるentropy

各フレームのカラーチャンネルのヒストグラムにおけるグレーレベルのエントロピーを測定するentropyフィルタの使い方。各チャンネルのピクセル値の不規則性を調べる。スコアが高いとより複雑な映像になる。ほかにYUVのピクセル値の統計をログで出力するにはsignalstatsフィルタがある。

YUV のデータを数値で表示する signalstats

Continue reading “映像のエントロピーを調べるentropy”

各チャンネルのピクセル値を反転するnegate

8ビットなら255を0に反転させるnegateフィルタの使い方。lutフィルタでも同様のことができる。タイムライン編集と高ビット深度に対応。

Windows の ffmpeg で生放送する方法 – LUT(ルックアップテーブル、ラット)

Continue reading “各チャンネルのピクセル値を反転するnegate”

オーディオフレームサイズを指定するasetnsamples

通常はコーデック毎やエンコーダ毎にサンプル数が異なるがこれを任意の値に指定できるasetnsamplesフィルタの使い方。映像のフレーム毎の内容を音声と同期させるために使う。

Continue reading “オーディオフレームサイズを指定するasetnsamples”

フィルタ内で分割するsegment、asegment

ffmpeg 4.5から使える予定のフィルタ。いままではselect、aselectフィルタで複数の区間をフィルタ内で分割できたのがより直感的に分割できるようになった。タイムライン編集が使えないフィルタを使ったり、エンコードパラメータを複数使い分けて1つのファイルに戻すなどに使う。

特定の映像フレームや音声サンプルを出力するselect, aselect

Tがあればタイムライン編集に対応している。
ffmpeg -filters : gist.github.com

Continue reading “フィルタ内で分割するsegment、asegment”

フィールドオーダーを変更するfieldorder

フィールドオーダーを書き換えて順番を入れ替えるfieldorderフィルタの使い方。フィールドオーダーの明示がなくフラグを立てるのはsetfieldフィルタ。

フィールドオーダーのフラグを建てるsetfield

Continue reading “フィールドオーダーを変更するfieldorder”

クロミナンスノイズ低減フィルタchromanr

色彩のデノイズを行うchromanrフィルタの使い方。軽く当てると明るさ成分には影響なく、あまり色彩を失わずにデノイズできる。変化度合いのしきい値が指定できるので調整しやすい。タイムライン編集に対応。フレーム間の色彩デノイズ、いわゆるちらつき除去はhqdn3dフィルタを使う。

Windows の ffmpeg で生放送する方法 – 3次元デノイズフィルタ

Continue reading “クロミナンスノイズ低減フィルタchromanr”

ffmpeg 4.4 リリース

およそ10か月ぶりの更新で2021年4月9日にffmpeg 4.4 “Rao“がリリースされた。今回のリリースはメジャーアップデートとなり、セキュリティ対応や4.3以降に追加された新機能の中からマスターにしか追加されていなかったフィルタやデコーダの新機能が全て取り込まれた。

git.videolan.org Git – ffmpeg.git/shortlog : n4.4

Continue reading “ffmpeg 4.4 リリース”

2つの映像の差の絶対値の合計平均を調べるmsad

ffmpeg 4.4から使える予定のフィルタ。2つの映像は同じ解像度、ピクセルフォーマットでなければならない。メタデータに出力できるのでffprobe連携しやすい。
ffprobe の使い方

framesyncに対応しているので片方の出力が終わったら終了するようにできる。
2ファイル入力するフィルタの挙動設定 framesync

基本コマンド

オプション設定はなし。出力値は0から1までの小数。変化が少ないほど0に近づく。
ffmpeg -i 調べたい動画 -i 元の動画 -filter_complex "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[0v];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[1v];[0v][1v]scale2ref=flags=bicubic,msad=shortest=1:repeatlast=0" -an -f null -

公式ドキュメント:FFmpeg Filters Documentation : msad

メタデータ出力内容。

  • lavfi.msad.msad.Y
  • lavfi.msad.msad.U
  • lavfi.msad.msad.V
  • lavfi.msad.msad_avg

ffprobe連携例。出力時間は-read_intervalsで指定。
ffprobe -f lavfi -i movie=enc.mp4,settb=1/AVTB,setpts=PTS-STARTPTS[0];movie=orig.mp4,settb=1/AVTB,setpts=PTS-STARTPTS[1];[0][1]scale2ref=flags=bicubic,msad -show_entries packet_tags=lavfi.msad.msad_avg -read_intervals "%1" > msad_avg.txt

2つの映像がどれだけ同じかを調べるidentity

ffmpeg 4.4から使える予定のフィルタ。2つの映像は同じ解像度、ピクセルフォーマットでなければならない。メタデータに出力できるのでffprobe連携しやすい。
ffprobe の使い方

framesyncに対応しているので片方の出力が終わったら終了するようにできる。
2ファイル入力するフィルタの挙動設定 framesync

基本コマンド

オプション設定はなし。出力値は0から1までの小数。
ffmpeg -i 調べたい動画 -i 元の動画 -filter_complex "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[0v];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[1v];[0v][1v]scale2ref=flags=bicubic,identity=shortest=1:repeatlast=0" -an -f null -

公式ドキュメント:FFmpeg Filters Documentation : identity

メタデータ出力内容。

  • lavfi.identity.identity.Y
  • lavfi.identity.identity.U
  • lavfi.identity.identity.V
  • lavfi.identity.identity_avg

ffprobe連携例。出力時間は-read_intervalsで指定。
ffprobe -f lavfi -i movie=enc.mp4,settb=1/AVTB,setpts=PTS-STARTPTS[0];movie=orig.mp4,settb=1/AVTB,setpts=PTS-STARTPTS[1];[0][1]scale2ref=flags=bicubic,msad -show_entries packet_tags=lavfi.identity.identity_avg -read_intervals "%1" > identity_avg.txt