複数の音声入力を合わせてレイアウトを指定するjoin

amergechannelmapフィルタを合わせたもの。

音声ストリームのチャンネルレイアウトを指定する amerge
音声のチャンネルレイアウトを変えるchannelmap

Continue reading “複数の音声入力を合わせてレイアウトを指定するjoin”

動画比較に便利なvideo-compare

クロスプラットフォームに対応し、フィルタの有無、エンコード設定の差異による目視確認に便利なvideo-compareの紹介。WindowsバイナリはReleasesページで配布している。コンソールから起動する。

GitHub – pixop/video-compare: Split screen video comparison tool using FFmpeg and SDL2

Continue reading “動画比較に便利なvideo-compare”

2つの映像の相関関係を調べるcorr

同じ解像度、フレームレート、ピクセルフォーマット、タイムベースの2つの映像の相関関係を調べるcorrフィルタの使い方。似た用途のフィルタにssimmsadフィルタがある。

2つの映像の画質評価をする SSIM
2つの映像の差の絶対値の合計平均を調べるmsad

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

Continue reading “2つの映像の相関関係を調べるcorr”

ffmpeg 6.0リリース

2023年2月28日にffmpeg 6.0 Von Neumann(ジョン・フォン・ノイマン – Wikipedia)がリリースされた。今回のリリースはメジャーアップデートとなり、5.1以降に追加された新機能の中からマスターにしか追加されていなかったフィルタやエンコーダ、デコーダ等の新機能が全て取り込まれた。

気になる新機能

  • Windowsのデスクトップキャプチャddagrab。HW支援しやすいピクセルフォーマットになっている
  • NVENC(av1_nvenc)、QSV(av1_qsv)、VCE(av1_amf)のAV1エンコード対応
  • QSVの新しいSDK、oneVPL対応
  • MediaCodecのエンコーダ、デコーダ対応でAndroid向けにHW支援
  • VA-APIの10/12bit 422、10/12bit 444 HEVCとVP9のエンコーダ、デコーダ
  • エンコードログを見やすく出力できる

前回記事:ffmpeg 5.1リリース

5.1以降に取り込まれた機能の一覧:Changelog 5.1 to 6.0 < git.videolan.org Git

ffmpeg -filters using Gyan ffmpeg

FFmpeg 6.0 Released With NVIDIA NVENC AV1, VA-API Improvements – Phoronix

エンコード前後のフレーム数やサイズを調べる

ffmpeg 6.0から使える予定の-stats_enc_pre、-stats_enc_post、stats_mux_preの使い方。フレーム数やPTS、DTS、サンプル数、サイズ、平均ビットレートなどがストリームごとに調べられる。従来は-vstats -vstats_file foo.txtでエンコードログを出力できたが、一層パースしやすい形で出力できる。

Continue reading “エンコード前後のフレーム数やサイズを調べる”

フレームのぼやけ度を判定するblurdetect

Marziliano, Pinaらの”A no-reference perceptual blur metric.”を基としたフレームのぼやけ度を判定するblurdetectフィルタの使い方。フィルタを通しても映像は変化しない。メタデータに出力するのでffprobe連携できる。

フレームのブロックノイズを数値化するblockdetectフィルタもある。
ブロックノイズを数値化するblockdetect

Continue reading “フレームのぼやけ度を判定するblurdetect”

前後フィールドを考慮して逆テレシネするfieldmatch

fieldmatchフィルタで逆テレシネしてプログレッシブフレームを作り、プログレッシブ化に漏れたフレームを改めてインターレース解除フィルタでプログレッシブ化しdecimateフィルタで間引けば24p化することができる。テレシネではなくインターレースのときは逆テレシネしないので、あとのインターレース解除フィルタでプログレッシブ化できる。ポストプロセスppsrcでノイズ除去、または明るさ、コントラストの調整することでオリジナルフィールドを劣化させず逆テレシネすることもできる。逆テレシネして24pまたは25pの映像には効果的だが、30p(縞なし)、60p(毎フレーム縞)が大半を占めるときは通常のインターレース解除フィルタのほうがよい。

Continue reading “前後フィールドを考慮して逆テレシネするfieldmatch”

単純な逆テレシネフィルタdetelecine

テレシネコンテンツを逆テレシネするdetelecineフィルタの使い方。途中にテレシネでない映像が含まれていても検証素材が多くないが周期は変わらないかもしれない。つまり本編が分かれていも逆テレシネできるが、途中のテレシネではない映像にはインターレース櫛が残る。

Continue reading “単純な逆テレシネフィルタdetelecine”

エッジ傾斜を考慮したインターレース解除フィルタestdif

estdifは”Edge Slope Tracing Deinterlacing Filter”の略語。fieldmatchフィルタを使ったような見た目になり、斜めの輪郭線が滑らかになるので見た目が良くなる。bwdifフィルタよりもボケ気味なのでサイズは小さくなりやすい。テレシネではない60iソースのインターレース解除には向いてないように思うので、yadifbwdifフィルタなどを使う。

ffmpeg でインターレース解除
前後フィールドを考慮して逆テレシネするfieldmatch

基本コマンド

ffmpeg input -vf estdif=mode=0:parity=-1:deint=0 -c:a copy output
ffplay input -vf estdif=0:-1:0

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

Continue reading “エッジ傾斜を考慮したインターレース解除フィルタestdif”

x264のcrfエンコードの結果からほかのcrf値のサイズを推測する

h.264 – ffmpeg – How to estimate CRF for h264 video target size – Stack Overflowより。

-crf 18 -preset slowでエンコードした映像のサイズ、平均ビットレートからほかの-crfの値のサイズ、平均ビットレートを推測する。例ではcrf1増減につき12.85%サイズが変化すると仮定して目標のサイズからのcrfを推測する。crf18で3500MBから2000MBのcrfを推測するには18+LOG(2000/3500)/LOG(1-0.1285)を計算する。計算は表計算ソフトに入力する。
経験上ではcrf1で10%程度は変化すると思っているので、この12.85%を適宜変更する。最初のcrf18のエンコードに時間がかかると思ったら、crf23でエンコードして同様の計算式に入れてもよい。

表計算ソフトコピペ用。
=18+LOG(目標サイズ/crf18サイズ)/LOG(1-0.1285)
=23+LOG(目標サイズ/crf23サイズ)/LOG(1-0.1285)