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”

各チャンネルのピクセル値を反転する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”