タグ別アーカイブ: Audio_Filters

音声のダイナミックレンジを広げる crystalizer

ffmpeg 3.2 でリリース予定のオーディオフィルタ。単純なアルゴリズムで音声のダイナミックレンジを広げる crystalizer フィルタの使い方。

基本コマンド

既定値のオプションを当てる
ffmpeg -i input -af crystalizer=i=2:c=1 output
ffmpeg -i input -af crystalizer=2:1 output
ffplay -i input -af crystalizer=2:1

公式ドキュメント:FFmpeg Filters Documentation : crystalizer
続きを読む 音声のダイナミックレンジを広げる crystalizer

ループ回数を指定できる 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

特定の区間だけフィルタを当てるタイムライン編集について

ffmpeg のフィルタの中には区間、以上、未満、毎の時間の条件をつけることができるものがある。これらをつけられるのは filters で調べたときに T と表示されるフィルタである。記事の下で紹介。

続きを読む 特定の区間だけフィルタを当てるタイムライン編集について

サンプリング周波数を変えずにテンポとピッチを変える rubberband

今まではテンポ(再生速度)を変えるには atempo を、ピッチ(高低)を変えるには asetrate を使っていたが、rubberbandasetrate で変わる周波数を変えずにピッチとテンポを変えることができる。

rubberband は別途ライブラリをインストールしないと使えないのと、現在は 64bit に未対応である。

基本コマンド

2倍速再生にする(映像は2倍速にはならない)
ffplay input -af rubberband=tempo=2

映像も2倍速再生にする
ffplay input -vf setpts=1/2*PTS -af rubberband=tempo=2
ffplay input -vf setpts=1/2*PTS -af atempo=2

公式ドキュメント:FFmpeg Filters Documentation : rubberband
続きを読む サンプリング周波数を変えずにテンポとピッチを変える rubberband

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

映像の YUV、彩度、色相を映像にオーバーレイしたり、コンソールに表示したり出来る drawgraph フィルタと、音声の周波数や音量などを映像にオーバーレイしたり、コンソールに表示したり出来る adrawgraph フィルタの使い方。映像の表示方法はグラフで表示する方法と、映像に数値をオーバーレイする方法の2通りがある。
続きを読む メタデータを映像化する drawgraph, adrawgraph