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

RTMP streams に対応した MPC-HC v1.7.8 が公開

2015年1月25日に公開された v1.7.8 から librtmp のパラメーターを使っての RTMP ストリームに対応した。これで RTMP 映像を受信できるが、アーカイブされた動画ではシークバーが動かなかったり、開始時間指定が機能しなかったり、ffplay では再生できる RTMPE が再生できなかったりと完全に機能しているわけではない。

ffmpeg でモーションブラーを掛ける

SHIROBAKO の15話でモーションブラーが出てきたがそれを ffmpeg でもある程度実現することができるのでその方法の紹介。ポイントは一定周期のフレーム数でブレンドの平均をするところ。

atadenoise フィルタでもっと手軽にモーションブラーを当てることができる
手軽にモーションブラー atadenoise

追記 2015年3月7日
tblend による「とても軽めのモーションブラー」を追加。

続きを読む ffmpeg でモーションブラーを掛ける

ffmpeg に nvenc(cuda) をインストールする

ffmpeg 2.6 から使える nvenc をコンパイルする方法。別途ヘッダファイルが必要なので nvidia の公式サイトから最新の SDK をダウンロードして nvEncodeAPI.h を include ディレクトリにコピーしておく。ffmpeg 3.2 から nvEncodeAPI.h を include ディレクトリにコピーする必要がなくなった。

hardware acceleration の Wiki:HWAccelIntro – FFmpeg
qsv 対応の ffmpeg をつくる

追記 2015年1月11日
5.x バージョン対応のパッチが Master of the Dark Arts-ニコニコミュニティ のオーナーの Sada_Maru氏 により配布された。ダウンロードは掲示板の 298 より。5.x バージョンは SDK の容量が小さくダウンロードが手軽である。現在はパッチ適用は不要。

追記 2015年3月25日
master では 4.x バージョン以下ではビルドできなくなり、5.x バージョン以上必須になったので記事を直した。
avcodec/nvenc: Drop support for old nvenc api : git.videolan.org Git

追記 2016年3月5日
master では 5.x バージョン以下ではビルドできなくなり、6.x バージョン以上必須になった。
configure: NVENC API version 6 is now required : git.videolan.org Git

追記 2016年4月28日
master で --enable-nonfree が不要になり配布バイナリに含められるようになった。
configure: Don’t require nonfree for nvenc : git.videolan.org Git – ffmpeg.git/commitdiff

追記 2016年8月29日
master で API 7.x に対応し、ffmpeg に組み込まれたので nvEncodeAPI.h のコピーが不要になった。ffmpeg で NVENC を使うのに SDK をダウンロードする必要がなくなったが、SDK をダウンロードするにはアカウント作成が必要になった。API 7.x で rc-lookahead のオプションと、Pascal generation GPU(GTX 1060、GTX 1070、GTX 1080)から HEVC 10-bit エンコードが追加された。それ以外の新機能が ffmpeg に実装されているかは未確認。API 7.x の新機能は以下の通り。

  • HEVC 8K (8192 pixels x 8192 pixels) encoding *
  • HEVC 4:4:4 encoding *
  • HEVC 10-bit encoding *
  • HEVC lossless encoding *
  • HEVC Sample Adaptive Offset (SAO) *
  • HEVC Motion-Estimation-(ME)-only mode *
  • HEVC (up to 8K) decoding *
  • VP9 (up to 8K) decoding *
  • HEVC long term reference (LTR) frame support
  • Asynchronous H.264 Motion-Estimation-(ME)-only mode
  • Look-ahead
  • Improved H.264 spatial adaptive quantization
  • H.264 temporal adaptive quantization
  • Rate control and quality improvements

* は Pascal generation GPU(GTX 1060、GTX 1070、GTX 1080)からの新機能になる

avcodec/nvenc: include nvEncodeAPI v7 SDK header : git.videolan.org Git
avcodec/nvenc: added support for 10 bit HEVC encoding : git.videolan.org Git
avcodec/nvenc: added support for rate control lookahead : git.videolan.org Git
続きを読む ffmpeg に nvenc(cuda) をインストールする

ffmpeg で アニメーションWebP(Animated WebP)を作る

APNG と並んで互換性の少ない Animated WebP について。ブラウザは現在のところ、Chrome と Opera が対応している。対応している画像投稿サイトはほとんどないと思うので実用性は高くない。対応カラーフォーマットは YUV420 で、アルファチャンネルに対応している。APNG のように可逆圧縮だけではないので低容量で アニメGIF よりも高画質に作れるが互換性が少ないのが弱点。

続きを読む ffmpeg で アニメーションWebP(Animated WebP)を作る

ffmpeg を使って透過したオーバーレイ動画を作る

透過のテキストはできるが透過の動画は overlay フィルタだけを使って動画を重ねても透過にならないので、blend フィルタを応用して透過したオーバーレイ動画を作る方法。コツは透過する画像の周りを背景となる映像と同じ映像をオーバーレイして blend の average で同じ映像同士の平均は同じというのを利用する。透過する映像の位置は overlay フィルタで指定する。前回記事の「ffmpeg で差分動画を作る」と同じように「:c0_opacity=.5」と等とすることで透過具合を変更することもできる。

追記 2015/01/15
識別子の c が表示されていなかったので c0 に変更した。

続きを読む ffmpeg を使って透過したオーバーレイ動画を作る

ffmpeg で差分動画を作る

Avisynth で言うところの Subtract を ffmpeg の blend を使って差分を表示して比較動画を作る方法。

YUV RGB を比較計算する blend

使うフィルタは blend で設定できる内容はたくさんあるが使うのは difference モードで2つの映像の差異を表示する。そのほかにも映像の YUVA/RGBA の値を四則演算できるが、それぞれの詳しい内容は理解していない。詳しい処理はソースコードを参照。

フレームレートを 30000/1001 から 24000/1001 に間引く場合は decimate するときれいに間引ける。インターレース解除は yadif、フレーム数の指定でのカットは trim を使う。yadif, trim, decimate, setpts の順番にフィルタをかける。
続きを読む ffmpeg で差分動画を作る