月別アーカイブ: 2015年9月

各映像チャンネルを分離する extractplanes

チャンネルを分離して YUV で個別に出力できる。対応チャンネルは YUV, RGB, アルファ である。

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

YUV をそれぞれ出力する例
ffmpeg -i input -filter_complex "extractplanes=y+u+v[y][u][v]" -map [y] y.mp4 -map [u] u.mp4 -map [v] v.mp4

Y だけ出力する例
ffmpeg -i input -filter_complex "extractplanes=y" y.mp4

Y だけ出力するのなら lutyuv でもできる
ffmpeg -i input -filter_complex "lutyuv=val:128:128" y.mp4

各映像チャンネルを結合する mergeplanes

分離したチャンネルを合わせたり入れ替えたり複製したり、フォーマットを変えたりできる。またアルファチャンネルのない映像に、他のチャンネルをアルファチャンネルに複製することもできる。チャンネルを入れ換えるだけなら lut2 でもでき、アルファチャンネルの追加なら alphamerge でもできる。
続きを読む 各映像チャンネルを結合する mergeplanes

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

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

音声を位相メーターの映像に変換する aphasemeter

基本コマンド

ffplay -f lavfi -i "amovie=input,aphasemeter=25:800x400:2:7:1:none"

基本は上から下に流れるので、rotate を使って右から左に流すコマンド
FFmpeg Filters Documentation : rotate
ffplay -f lavfi -i "amovie=input,aphasemeter=25:800x800:2:7:1:yellow,rotate=90*PI/180"

公式ドキュメント:FFmpeg Filters Documentation : aphasemeter
続きを読む 音声を位相メーターの映像に変換する aphasemeter

ffmpeg 2.8 の気になる新機能とは

ffmpeg 2.8 が2015年9月9日リリースされた。それに伴い ffmpeg 2.7 から新たに追加されたフィルタやエンコーダーやデコーダーなど気になる新機能についてのまとめ。

チェンジログ:git.videolan.org Git – ffmpeg.git/blob – Changelog

広く恩恵を受けるのは「Intel QSV-accelerated MPEG-2 video」の部分で MPEG-2 video を libx264 でエンコードしている人にはエンコード速度の向上が図れる。ただしこれが有効になっている Windows バイナリが一般公開されていないので Master of the Dark Arts-ニコニコミュニティ で配布している Full-Auto-modified-v2 を使うと手軽に Windows用の ffmpeg を作ることが出来る。

qsv 対応の ffmpeg をつくる

2.7 から新たに追加されたフィルタの気になる部分については随時ブログで更新していたので該当記事を参照。

更新予定のフィルタ

  • aphasemeter filter
  • showfreqs filter
  • adrawgraph audio and drawgraph video filter
  • erosion, dilation, deflate and inflate video filters
  • vectorscope filter
  • waveform filter

2つの映像の画質評価をする SSIM

2入力した映像を比較してオリジナルにどれだけ忠実であるか SSIM の値を計算する。主な用途はエンコード前後を比較してどれだけ劣化したのか、特定のフレームを抽出してエンコードを見直したりする。libx264 エンコードでリアルタイムで計測する場合はオプションの -tune ssim -ssim 1 を使う。

Windows の ffmpeg で生放送する方法 : エンコードのログ出力の方法

最終結果だけを表示
ffmpeg -i input1 -i input2 -filter_complex ssim -an -f null -

ログファイルを出力する
ffmpeg -i input1 -i input2 -filter_complex ssim=stats.txt -an -f null -

metadata でフレーム単位で表示する方法。ここでは unsharp の Y の ssim を表示している。
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,metadata=print:key=lavfi.ssim.Y
lavfi.ssim.X 形式で X に代入できるのは、Y, U, V, R, G, B, All, dB。
続きを読む 2つの映像の画質評価をする SSIM

比較する動画の解像度に合わせる scale2ref

1入力した映像を2入力の解像度にリサイズする scale2ref の使い方。
主な用途は異なる解像度の動画をフィルタ内で比較、参照したりするときに、参照動画の解像度は scale では取得できないので その代わりに scale2ref を使うことになる。使えるオプションは scale と同じ。

基本コマンド

input1:640×360, input2:1280×720
input1 の解像度は 1280×720 にリサイズされ、input2 はそのまま
ffmpeg -i input1 -i input2 -filter_complex scale2ref[a][b] -map [a] output1 -map [b] output2

input1 の解像度は input2 の4分の1にリサイズされ、input2 はそのまま
ffmpeg -i input1 -i input2 -filter_complex scale2ref=1/4*iw:1/4*ih[a][b] -map [a] output1 -map [b] output2

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