2015年8月のニコ生統計

集計期間は週間のニコ生統計の8月分である。2015年の1月の2週目から取得漏れの R-18 放送を含めて Vita API で取得し始めたのでそれ以前と比べて取得放送数が増えている。

Continue reading “2015年8月のニコ生統計”

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

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

アルファチャンネルをグレーで出力する alphaextract

基本コマンド

YUVをそれぞれの1チャンネルを出力する例。
ffmpeg -i input -filter_complex "extractplanes=y+u+v[y][u][v]" -map [y] -c:v ffv1 y.mkv -map [u] -c:v ffv1 u.mkv -map [v] -vcodec ffv1 v.mkv

Yだけの1チャンネルを出力する例。
ffmpeg -i input -filter_complex "extractplanes=y" -c:v ffv1 y.mkv

Yの色に彩度を128で固定してlutyuvフィルタでグレースケール出力する。
ffmpeg -i input -filter_complex "lutyuv=val:128:128" y.mp4

420サブサンプリングのとき、Yを上に、Uを左下に、Vを右下に配置して再生する。
ffplay -i input -vf "extractplanes=y+u+v[y][u][v];[u][v]hstack[uv];[y][uv]vstack"
ffplay input -vf “extractplanes=y+u+v,xstack=3:0_0|0_h0|w1_h0"

420サブサンプリングのとき、Yを左に、Uを右上に、Vを右下に配置して再生する。
ffplay -i input -vf "extractplanes=y+u+v[y][u][v];[u][v]vstack[uv];[y][uv]hstack"
ffplay -i input -vf "extractplanes=y+u+v,xstack=3:0_0|w0_0|w0_h1"

解像度が一致しなくても映像を並べられる xstack

RGBを縦に並べて再生する。
ffplay -i input -vf "extractplanes=r+g+b,vstack=3"
ffplay -i input -vf "extractplanes=r+g+b[r][g][b];[r][g][b]vstack=3"

以下のようなエラーが出た場合は、extractplanesフィルタの前にformatフィルタでyuv420pなどと指定して改めてフォーマットを宣言する。

The following filters could not choose their formats: Parsed_extractplanes_2
Consider inserting the (a)format filter near their input or output.
Error opening filters!

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

分離したチャンネルを合わせるには
各映像チャンネルを結合する mergeplanes
LUTを手軽に入れ替えられるlut2、tlut2、swapuv

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

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

LUTを手軽に入れ替えられるlut2、tlut2、swapuv
別ファイルの情報から元映像を透過させる alphamerge

Continue reading “各映像チャンネルを結合する mergeplanes”

音声の周波数を映像化する showfreqs

Y軸に振幅、X軸に周波数に変換するshowfreqsフィルタの使い方。出力フォーマットはRGBAの可変フレームレートフレームレートが指定できるようになった

基本コマンド

ffplay -f lavfi -i amovie=input,showfreqs=s=512x288:mode=bar:ascale=log:fscale=lin:win_size=2048:win_func=hanning:overlap=1:averaging=1:colors=white

AAC 48.0 KHz 125Kbps の音声

Continue reading “音声の周波数を映像化する showfreqs”

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

映像の YUV、彩度、色相を映像にオーバーレイしたり、コンソールに表示したり出来るdrawgraphフィルタと、音声の周波数や音量などを映像にオーバーレイしたり、コンソールに表示したり出来るadrawgraphフィルタの使い方。出力フォーマットは RGBA で色指定の AA の値を小さくすることでオーバーレイしたときに背景が映る。

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

基本コマンド

signalstatsフィルタを使って YUV のデータを表示している。

YUV のデータを数値で表示する signalstats

Continue reading “メタデータを映像化する drawgraph, adrawgraph”

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

フィルタの挙動について:
ffmpeg: aphasemeter, meaning of measurement – Super User
audio – Calculate Phase angle between two signals i.e. digital Phase meter – Signal Processing Stack Exchange

基本コマンド

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

基本は上から下に流れるので、transposeフィルタを使って左から右に流すコマンド。
ffplay -f lavfi -i "amovie=input,aphasemeter=25:400x800:2:7:1:yellow:1[out1],transpose=2[out0]"

ピクセル数はそのままに映像を回転させる transpose

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

Continue reading “音声を位相メーターの映像に変換する 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 の値を計算する。主な用途はエンコード前後を比較してどれだけ劣化したのか、特定のフレームを抽出してエンコードを見直したりする。比較する動画は同じ解像度とfps、ピクセルフォーマットである必要がある。libx264 エンコードでリアルタイムで計測する場合はオプションの-tune ssim -ssim 1を使う。

ファイルの入力順が逆だったのを訂正した。2021年8月11日
1入力がオリジナルの動画、2入力がSSIMを計算する動画ではなく、1入力がSSIMを計算する動画で、2入力がオリジナルの動画でlibvmafフィルタと同じ順番。

Continue reading “2つの映像の画質評価をする SSIM”

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

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

2024年5月3日のコミットで非推奨に変わったので、今後(7.0より先)はscaleフィルタで代用する。

リサイズする scale

Continue reading “比較する動画の解像度に合わせる scale2ref”

ニコ生で使うデノイズフィルタの例

一般的に配信用途でのデノイズにはhqdn3dフィルタだけが使われているが、個別のコンシューマゲームとして一番配信されている Splatoon を ffmpeg で配信するときに 384kbps の時間帯ではどうしても画質が維持できない。そこでもう一つデノイズフィルタを加えることで全体の画質を向上させてみた。

使うのはppフィルタで随分前からブログで紹介していたが、配信向きではないと書いていたので使われることがなかった。しかし色々調べてみると見た目の画質は維持しながら 3D特有のテクスチャーをhqdn3dフィルタ以上にぼかすことが出来るので、複雑な部分をぼかしながら他の場所にビットレートを割ることで全体的に見栄えのよい映像にすることが出来る。

Windows の ffmpeg で生放送する方法 : pp
Windows の ffmpeg で生放送する方法 : 3次元デノイズフィルタ(hqdn3d)

そのほかの関連フィルタ:強力な2次元デノイザ sab

Continue reading “ニコ生で使うデノイズフィルタの例”