低域を減退させるhighpassと広域を減退させるlowpass

3dBポイントの周波数でフィルタを適用する。フィルターは単極、または両極のいずれかが選択できる。フィルタのロールオフ(減衰傾度)は、1オクターブあたり6dB/極になる。周波数毎に無音にするにはsuperequalizerフィルタなどを使う。

Continue reading “低域を減退させるhighpassと広域を減退させるlowpass”

ピッチを任意の周波数に変更するasetrate

入力した音声のサンプリング周波数より高ければ高音に、低ければ低音に変える。出力周波数は変更した周波数に変わるのでオプションの-arか、aresampleフィルタで目的の周波数に変更する。

ピッチ変更はrubberbandフィルタでもできる。
サンプリング周波数を変えずにテンポとピッチを変える rubberband

Continue reading “ピッチを任意の周波数に変更するasetrate”

色補正フィルタのgrayworld

異なる伝達関数に変換するときに使い、事前に線形変換が必要。ピクセルフォーマットはgbrpf32leになるので負荷はかなり大きい。

論文:https://www.researchgate.net/publication/275213614_A_New_Color_Correction_Method_for_Underwater_Imaging

Continue reading “色補正フィルタのgrayworld”

vlukanのハードウェア支援を受けた汎用フィルタlibplacebo

リサイズ、デバンディング、トーンマッピング、色相調整などができる外部ライブラリのlibplaceboフィルタの使い方。パラメータが多いので一部を抜粋。

Continue reading “vlukanのハードウェア支援を受けた汎用フィルタ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以降に追加された新機能の中からマスターにしか追加されていなかったフィルタやエンコーダ、デコーダ等の新機能が全て取り込まれた。

気になる新機能はハードウェア支援を受けて多様なフィルタが使えるlibplaceboフィルタ、MacOS向けのVideoToolbox ProResエンコーダ、scaleフィルタ、-sオプションのslice threading対応、フィルタ内でファイル分割するsegmentフィルタなど。リリースノートにない部分ではDolby Vision RPUパース対応と、-readrateオプションで読み込み速度を任意に制限できる。

ffmpeg でダウンロード速度を制限する

前回記事:ffmpeg 4.4 リリース

Continue reading “ffmpeg 5.0リリース”

file宣言が不要なプロトコルconcatf

ffmpeg 4.5から使えるプロトコル。demuxerのconcatでつけている-f concat -safe 0や連結ファイルをまとめて記述したテキストのファイルの前に指定するfileも不要に連結できる。いつの間にか2ファイル以上連結しようとすると「Invalid data found when processing input」のエラーが出て連結できなくなっている。

concat を使い分ける

基本コマンド

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

公式ドキュメント:FFmpeg Protocols Documentation : concatf

エッジ検出フィルタscharr

ffmpeg 4.5でリリース予定のビデオフィルタ。sobelprewittrobertsはカーネルが少し異なるがオプションは同じである。

Continue reading “エッジ検出フィルタscharr”

PIDをトラックIDとしてMP4コンテナにつける

encoding – How can I setup PIDs using ffmpeg & MP4 Container? – Stack Overflowより。

-streamidを指定して、かつ-use_stream_ids_as_track_ids trueを併用する。内容はMediainfoで確認できる。

ffmpeg -i input.ts -map 0:v -map 0:a:0 -map 0:a:1 -streamid 0:0x100 -streamid 1:0x110 -streamid 2:0x111 -use_stream_ids_as_track_ids true output.mp4

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

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

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