カテゴリー別アーカイブ: FFmpeg

直線上の YUV, RGB の値を表示する oscilloscope

ffmpeg 3.4 から追加予定のフィルタ。直線上の YUV, RGB の平均値と最小値、最大値と波形が表示される oscilloscope フィルタの使い方。

基本コマンド

中央の平行方向で調べるコマンド例
ffmpeg -i input -vf oscilloscope=x=0.5:y=0.5:s=0.8:t=0.5:o=0.8:tx=0.5:ty=0.9:tw=0.8:th=0.3:c=7:g=1:st=1:sc=1 output
ffmpeg -i input -vf oscilloscope=0.5:0.5:0.8:0.5:0.8:0.5:0.9:0.8:0.3:7:1:1:1 output
ffplay -i input -vf oscilloscope=0.5:0.5:0.8:0.5:0.8:0.5:0.9:0.8:0.3:7:1:1:1

oscilloscope の表示例

16:9 の映像で調べる範囲と統計グラフの幅を 0.9 で揃えるコマンド例
ffplay "-i input -vf oscilloscope=s='0.9*16/hypot(9,16)':tw=0.9
公式ドキュメント:FFmpeg Filters Documentation : oscilloscope
続きを読む 直線上の YUV, RGB の値を表示する oscilloscope

矩形部分の YUV, RGB の値を表示する pixscope

ffmpeg 3.4 から追加予定のフィルタ。矩形部分の YUV, RGB の平均値と最小値、最大値、RMS と矩形の拡大も表示される pixscope フィルタの使い方。

基本コマンド

映像中央の縦横7ピクセルを調べて、統計グラフを右下に表示する
ffmpeg -i input -vf pixscope=x=0.5:y=0.5:w=7:h=7:o=0.5:wx=-1:wy=-1 output
ffmpeg -i input -vf pixscope=0.5:0.5:7:7:0.5:-1:-1 output
ffplay -i input -vf pixscope=0.5:0.5:7:7:0.5:-1:-1

pixscope フィルタの表示例

公式ドキュメント:FFmpeg Filters Documentation : pixscope
続きを読む 矩形部分の YUV, RGB の値を表示する pixscope

フリッカー(ちらつき) を低減する deflicker

ffmpeg 3.4 から追加予定のフィルタ。蛍光灯や昔の映像で数フレーム毎に明るくなったり暗くなったりするのを前後フレームから平均してちらつきを抑える deflicker フィルタの使い方。

基本コマンド

5フレーム前から輝度の平均が始まる
ffmpeg -i input -vf deflicker=s=5:m=0:bypass=0 output
ffplay -i input -vf deflicker=5:0:0

公式ドキュメント:FFmpeg Filters Documentation : deflicker
続きを読む フリッカー(ちらつき) を低減する deflicker

フィルタで手軽にリミッテッドレンジに出来る limiter

ffmpeg 3.4 から追加予定のフィルタ。各チャンネルの上限と下限を越えたらその上限と下限でカットする limiter フィルタの使い方。今までは lut フィルタでも同様のことが出来たが、こちらのフィルタの方がコードの量も少なく直感的でわかりやすい。

基本コマンド

すべてのチャンネルを 16 から 235 までのリミテッドレンジに変える
ffmpeg -i input -vf limiter=16:235 output
ffplay -i input -vf limiter=16:235

オプション

  • min[int]
    最小値の指定
    範囲:0 から 65535 まで
    既定値:0
  • max[int]
    最大値の指定
    範囲:0 から 65535 まで
    既定値:65535
  • planes[int]
    フィルタを当てるチャンネル指定
    詳しくは ffmpeg について | チャンネルの順番と注意点 を参照
    範囲:0 から 15 まで
    既定値:15(すべてのチャンネル)

2ファイル入力するフィルタの挙動設定 framesync

一部のフィルタ(現在では blend, convolve, libvmaf, lut3d, overlay, psnr, ssim) で設定できる動画時間が異なるファイルの挙動設定を行う framesync の設定方法。以前は個別のフィルタ毎に設定していたがこれのおかげで設定内容が統一された。

公式ドキュメント:FFmpeg Filters Documentation : Options for filters with several inputs (framesync)

記事にしているフィルタ
Windows の ffmpeg で生放送する方法 : overlay
YUV RGB を比較計算する blend
2つの映像の画質評価をする SSIM
続きを読む 2ファイル入力するフィルタの挙動設定 framesync

18の周波数帯に分けてゲインを調整する superequalizer

ffmpeg 3.4 から追加予定のフィルタ。compand フィルタのように設定した周波数の音量を調整するよりも手軽に特定周波数の音量を上げたり下げたり出来る superequalizer フィルタの使い方。

基本コマンド

以下のコマンドでは音量は変化しない
ffmpeg -i input -af superequalizer=1b=1:2b=1:3b=1:4b=1:5b=1:6b=1:7b=1:8b=1:9b=1:10b=1:11b=1:12b=1:13b=1:14b=1:15b=1:16b=1:17b=1:18b=1 output
ffmpeg -i input -af superequalizer=1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1 output
ffplay -i input -af superequalizer=1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1:1

公式ドキュメント:FFmpeg Filters Documentation : superequalizer
続きを読む 18の周波数帯に分けてゲインを調整する superequalizer

エッジ検出フィルタ roberts

ffmpeg 3.4 から追加予定のフィルタ。Roberts cross operator を用いたエッジ検出フィルタ roberts の使い方。同様のフィルタに sobel, prewitt があり、他にもエッジ検出できるフィルタはいくつかある。

エッジ検出フィルタ sobel, prewitt
ffmpeg でエッジ検出をする edgedetect
先鋭化やぼかし、エンボス処理などができる convolution
ffmpeg で使える frei0r フィルタの使い方

基本コマンド

ffmpeg -i input -vf roberts=planes=15:scale=1:delta=0 output
ffmpeg -i input -vf roberts=15:1:0 output
ffplay -i input -vf roberts=15:1:0

公式ドキュメント:FFmpeg Filters Documentation : roberts
続きを読む エッジ検出フィルタ roberts

各チャンネルの音量を映像化する abitscope

各チャンネルの音量(周波数ではない)を色別で横に並べて映像にする abitscope フィルタの使い方。出力フォーマットは RGBA。似たフィルタに showvolumeshowfreqs がある。

基本コマンド

ffmpeg -i input -filter_complex abitscope -acodec copy output
ffmpeg -re -i input -filter_complex abitscope -f sdl -

動画にオーバーレイする例
ffmpeg -i input -filter_complex abitscope,[0:v]overlay -acodec copy output
ffmpeg -re -i input -filter_complex abitscope,[0:v]overlay -f sdl -

abitscope フィルタで動画にオーバーレイする例(5.1ch なので6色)

公式ドキュメント:FFmpeg Filters Documentation : abitscope
続きを読む 各チャンネルの音量を映像化する abitscope

サラウンドをヘッドフォン用の2チャンネルに配置する headphone

ffmpeg 3.4 から追加予定のフィルタ。サラウンドを HRIRs(head-related impulse response, 頭部インパルス応答) ファイルを元にチャンネルを配置しステレオとして出力する headphone フィルタの使い方。

HRIRs ファイルの配布ページが重たい場合はミラーを上げている。

HRIRs ファイルには DFC, MINP, RAW があり、基本コマンドには Subject_001_Wav.zip を使っている。

基本コマンド

5.1ch の音声に映像をコピーして 2ch で出力
ffmpeg -i input -i azi_30_ele_0_DFC.wav -i azi_330_ele_0_DFC.wav -i azi_0_ele_0_DFC.wav -i azi_100_ele_0_DFC.wav -i azi_260_ele_0_DFC.wav -filter_complex "[0:a][1][2][3][3][4][5]headphone=FL|FR|FC|LFE|BL|BR" -vcodec copy output.mp4
2ch の音声を 5.1ch に surround フィルタで変換し映像をコピーして 2ch で出力
ffmpeg -i input -i azi_260_ele_0_DFC.wav -i azi_100_ele_0_DFC.wav -i azi_0_ele_0_DFC.wav -i azi_30_ele_0_DFC.wav -i azi_330_ele_0_DFC.wav -filter_complex "[a:0]surround[0a];[0a][1][2][3][3][4][5]headphone=FL|FR|FC|LFE|BL|BR" -vcodec copy output.mp4
公式ドキュメント:FFmpeg Filters Documentation : headphone
続きを読む サラウンドをヘッドフォン用の2チャンネルに配置する headphone