月別アーカイブ: 2016年3月

ループ回数を指定できる loop, aloop

ffmpeg で無限入力が可能に で追加されていたが、フィルタを掛けて加工することはできなかった。今回はフィルタ内でループするのでループ回数やループした部分にもフィルタが当てられる。

基本コマンド

1回ループして2回読み込む
ffmpeg -i input -filter_complex loop=1:32767:0;aloop=1:2.14748e+009:0

オプション

  • loop
    ループ回数。-1 で無限
    既定値:0[int]
  • size
    ループにどれだけバッファサイズを取るか
    loop ならフレーム数
    最大値:32767
    既定値:0[int64]
    aloop サンプル数
    最大値:2.14748e+009
    既定値:0[int64]
  • start
    ループするときにどの位置からループするか
    loop ならフレーム数
    既定値:0[int64]
    aloop サンプル数
    既定値:0[int64]

メタデータをコンソールに表示する metadata, ametadata

特定のフィルタで出力されるメタデータを扱うことができる metadata の使い方。ametadata も同じオプションで使うことができる。こちらはコンソールに出力するに対して drawgraph は映像にテキストやグラフで出力する。drawgraph と比べて出力範囲を指定しなくても良いので使いやすい。

メタデータを映像化する drawgraph, adrawgraph

基本コマンド

signalstats フィルタから YDIF を表示している
ffplay -f lavfi -i movie=input,signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
unsharp フィルタの Y差分を ssim で表示している
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,metadata=print:key=lavfi.ssim.Y
drawtext フィルタで映像に書き込む
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,drawtext=fontfile='C\://WINDOWS/Fonts/arial.ttf':text='"SSIM="%{metadata\:lavfi.ssim.all}'
ebur128 フィルタで M, S, I を同時に表示する
ffplay -f lavfi -i amovie=input,ebur128=metadata=1,ametadata=print:key=lavfi.r128.M,ametadata=print:key=lavfi.r128.S,ametadata=print:key=lavfi.r128.I[out0];amovie=input[out1]

公式ドキュメント:FFmpeg Filters Documentation : metadata, ametadata
続きを読む メタデータをコンソールに表示する metadata, ametadata

音声統計データを表示する astats

音声統計データを表示する astats の使い方。メタデータ対応しているので出力したログの加工が容易になる。

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

基本コマンド

ffprobe
ffprobe -f lavfi -i amovie=input,astats=length=0.05:metadata=0:reset=0
ffprobe -f lavfi -i aevalsrc=sin(440*2*PI*t):s=8000:d=1,astats=length=0.05:metadata=0:reset=0
続きを読む 音声統計データを表示する astats

音量を脈打つように上げ下げできる apulsator

apulsator はオートパンやトレモロの中間的なフィルタである。ffmpeg では pantremolo で使える。左右のチャンネルの位相や波形をずらしたりする LFO (low frequency oscillator) を元に音量を変える。オフセットが 0 のときはトレモロと同じように左右のチャンネルを等しく変える。オフセットが 0.5 のときはオートパンのように周波数の半分の位相をずらす。オフセットが 1 のときは再び等しく変え、1 に近づくほどより早く右から左へのスピーカーに音が渡されずれが小さくなる。

基本コマンド

ffplay input -af apulsator=level_in=1:level_out=1:mode=sine:1:amount=1:offset_l=0:offset_r=0.5:width=1:timing=hz:hz=2

ahistogram を併用するとずれ具合が見える化する
ffplay -f lavfi amovie=input,apulsator=level_in=1:level_out=1:mode=sine:1:amount=.8:offset_l=.6:offset_r=1:width=1:timing=bpm:hz=2,ahistogram=dmode=separate:r=25:s=hd720:scale=log:ascale=log:acount=1:rheight=.1:slide=replace[out0];amovie=input,apulsator=level_in=1:level_out=1:mode=sine:1:amount=.8:offset_l=.6:offset_r=1:width=1:timing=bpm:hz=2[out1]

音量のヒストグラムを映像化する ahistogram

公式ドキュメント:FFmpeg Filters Documentation : apulsator
続きを読む 音量を脈打つように上げ下げできる apulsator

こもった音や割れた音に変える aemphasis

LPレコードやCDなどのフィルタカーブで強調された素材を作成または復元する aemphasis の使い方。音割れさせたりこもった音に変えたりできる。

基本コマンド

ffplay input -af aemphasis=level_in=1:level_out=1:mode=reproduction:type=cd

公式ドキュメント:FFmpeg Filters Documentation : aemphasis
続きを読む こもった音や割れた音に変える aemphasis

指定したチャンネルの周波数帯の音量を変える anequalizer

指定したチャンネルの周波数帯の音量を変えられる anequalizer の使い方。チャンネル毎に設定でき、設定方法も直感的なので使いやすい。似たフィルタに compand があるが、こちらは DTM の設定になれている人向け。

Windows の ffmpeg で生放送する方法 : compand

基本コマンド

ステレオ音声を読み込み c0(FL)の周波数4000Hzの前後100Hzを -10dBにする。c1(FR)も同様
ffplay input -af "anequalizer=c0 f=4000 w=200 g=-10 f=0|c1 f=4000 w=200 g=-10 f=0"

showspectrumpic を併用すると効果の具合が視覚的に分かる。
ffmpeg -i input -filter_complex "anequalizer=c0 f=4000 w=200 g=-20|c1 f=4000 w=200 g=20",showspectrumpic=s=1024x1024:mode=separate anequalizer.png

anequalizer と showspectrumpic を併用して効果を見える化

公式ドキュメント:FFmpeg Filters Documentation : anequalizer
続きを読む 指定したチャンネルの周波数帯の音量を変える anequalizer