以前の記事でレジストリを書き換えてffmpegで表示されるデバイス名を変更して同時利用する記事を書いたが、今回はそんな危険なことをせずにffmpegそれ自体にそれぞれを識別する機能が追加されたのでそれを利用してウェブカメラを同時利用する方法。
QSV 対応の ffmpeg をつくる
ffmpeg で使える QSV(Intel Quick Sync Video)のビルド方法と使い方。CPU の世代によって使えるエンコーダ、デコーダ、オプションやフィルタが異なる。
- CPU の世代が分かる :Intel Core – Wikipedia
- hardware acceleration の Wiki :HWAccelIntro – FFmpeg
- 各世代のエンコード、デコードの対応表:Media Capabilities Supported by Intel Hardware、Hardware/QuickSync – FFmpeg、Intel Graphics Technology – Wikipedia、Intel Quick Sync Video – Wikipedia、GitHub – intel/media-driver、QSVEnc/GPUFeatures at master · rigaya/QSVEnc
- 2016年1月次点での公式のベンチマーク PDF :Intel® Quick Sync Video and FFmpeg Performance – cloud-computing-quicksync-video-ffmpeg-white-paper.pdf
- Intel® Iris® Xeのベンチマーク:media-delivery/intel-iris-xe-max-graphics.md at master · intel/media-delivery
- 公式のドキュメント群:media-delivery/doc at master · intel/media-delivery · GitHub
関連記事
他のサイト
- Compiles FFmpeg with Cartwheel Patches, Quick Sync and OneVpl support. Careful needs testing, currently Work in Process. Read comments. · GitHub
- This gist will generate an Intel QSV-enabled FFmpeg build using the open source Intel Media SDK. Testbed used: Ubuntu 18.04LTS. A fallback is also provided for the intel vaapi driver where needed.
- Ubuntu* Intel® software for general purpose GPU capabilities documentation
公式のコマンド例
Dxtory のキャプチャ内容を ffmpeg で取り込み配信する
Dxtory は有料ではあるがこれを使うことでN Air、XSplit、OBS Studioなどのレイアウト画面、MPC-HC(madVR)などのプレイヤー、各種PCゲーム(DirectX や DirectDraw、OpenGL、Vulkan)を ffmpeg で直接取り込むことができる。
ffmpeg でメタデータを加える
フィルタで扱う:Meta | ニコラボ
色空間など:色関係の設定のまとめ
カバーアート:mp4, mp3, flacにカバーアートを付ける
特徴
- メタデータは直接コマンドに書き込むと、メタデータを書き込んだファイルを読み込む2種類の方法がある
- メタデータファイルは UTF-8 でエンコードされた INI 形式のテキストファイルで構成される
- ファイル読み込みの場合にはヘッダに識別番号を付けてコマンドに識別番号を指定する
- メタデータの指定方法はkey=value
- チャプターやストリーム毎にメタデータを指定できる
- 先頭に [CHAPTER] や [STREAM] を宣言してチャプターやストリームを指定する
- チャプターでタイムベースを指定できる。指定していない場合はミリ秒とする
- 例:TIMEBASE=num/den
チャプターの開始と終了の時間を指定する。演算はできないので予め計算しておく(数値は正の整数) - 例:START=num, END=num
- 例:TIMEBASE=num/den
- コメントには “;” , “#” が使える
- 特殊文字(“=”, “;”, “#”, “” と改行)はバックスラッシュ()でエスケープする
DiXiM BD Burner 2013 で 0x80304005 エラーが出る
Logitec の USB3.0 接続の BD ドライブ LBD-PMF6U3HBKW でテレビ番組をネット経由で BD にダビングできなくなった話とその解決方法。
なお、テレビ番組のダビングには付属のソフトの DiXiM BD Burner 2013 for Logitec を用いている。
症状
以前(2014年11月)にダビングした BD に追記の形を取ると書き込み 100% まで行くがその後の処理で(ディスクの回転も)止まる。BD にはデータが書き込まれているのでダビング10の回数が減る。しかし動画は再生できない。このときに BD は取り出し不能になる。十数分放置すると DiXiM BD Burner 2013 がエラーになり、0x80304005 のコードが表示される。こうなると BD が取り出し可能になる。このエラーになると以前に書き込んだデータは再生できるがエラー以降に書き込んだデータは再生できない。さらに DiXiM BD Burner 2013 でのフォーマットができなくなるが、エクスプローラーからのクイックフォーマットはできる。
解決策
まずは最新版に DiXiM BD Burner 2013 をアップグレードした。現時点では Ver.1.0.19.0 が最新版。しかしこれでも解決しなかったため別の方法をとる。エクスプローラーでクイックフォーマットをしてから再度、DiXiM BD Burner 2013 でフォーマットすると問題なくダビングできた。
エラーの原因を推測
以前のデータと混在させることなく新しいフォーマットの状態で書き込みができると言うことは以前と今回とで書き込む内容が変わったのかもしれない。
RTMP streams に対応した MPC-HC v1.7.8 が公開
2015年1月25日に公開された v1.7.8 から librtmp のパラメーターを使っての RTMP ストリームに対応した。これで RTMP 映像を受信できるが、アーカイブされた動画ではシークバーが動かなかったり、開始時間指定が機能しなかったり、ffplay では再生できる RTMPE が再生できなかったりと完全に機能しているわけではない。
ffmpeg でモーションブラーを掛ける
SHIROBAKO の15話でモーションブラーが出てきたがそれを ffmpeg でもある程度実現することができるのでその方法の紹介。ポイントは一定周期のフレーム数でブレンドの平均をするところ。
具体的にはモーションブラーとここで紹介するフレームブレンドは異なる。
使うフィルタはblend
フィルタ。
YUV RGB を比較計算する blend
atadenoise
フィルタで手軽に前後1フレームのモーションブラーを当てることができる。
手軽にモーションブラー atadenoise
フレームブレンドで過去フレームの加重を調整するのに便利なtmix
フィルタがある。
FFmpeg Filters Documentation : tmix
追記 2015年3月7日
tblend
フィルタによる「とても軽めのモーションブラー」を追加。
ffmpeg に nvenc(cuda)をインストールする
ffmpeg 2.6から使えるNVENC, NVDECを使う方法。
- FFmpeg / libav | NVIDIA Developer
- NVIDIA FFmpeg Transcoding Guide | NVIDIA Developer Blog
- NVIDIA VIDEO CODEC SDK | NVIDIA Developer
- Using FFmpeg with NVIDIA GPU Hardware Acceleration
hardware acceleration の Wiki:HWAccelIntro – FFmpeg
追記 2024年4月1日
SDK 12.2のビット深度APIのサポート。
- avcodec/nvenc: support SDK 12.2 bit depth API · FFmpeg/FFmpeg@06c2a2c · GitHub
- avcodec/nvenc: update minimum driver version list · FFmpeg/FFmpeg@c06e9e2 · GitHub
- avcodec/nvenc: add support for unidirectional b-frames · FFmpeg/FFmpeg@21b4708 · GitHub
- avcodec/nvenc: add support for uhq tune · FFmpeg/FFmpeg@a270966 · GitHub
- avcodec/nvenc: add support for lookahead_level · FFmpeg/FFmpeg@77d23bc · GitHub
- avcodec/nvenc: add support for HEVC temporal filtering · FFmpeg/FFmpeg@64e3fc9 · GitHub
関連記事
ffmpeg で アニメーションWebP(Animated WebP)を作る
APNGと並んで互換性の低かったAnimated WebPについて。対応ブラウザは、Chrome、Opera、Winodws 10のMicrosoft Edge44以降、そしてFirefox 65以降である。画像投稿サイトはほとんど対応してないと思うので実用性は高くない。対応カラーフォーマットは YUV420p(YUVA420p)。APNGのように可逆圧縮だけではないので低容量でアニメGIFよりも高画質に作れるが互換性が低いのが弱点。
2020年11月現在、ffmpegではAnimated WebPをデコードできない。1フレームのWebpならデコードできる。Patchworkにパッチが来ているが公式には組み込まれていない。
#4907 (Support decoding animated WebP images) – FFmpeg
[FFmpeg-devel] avformat/webpdec: WebP demuxer implementation – Patchwork
ffmpeg を使って透過したオーバーレイ動画を作る
透過のテキストはできるが透過の動画はoverlay
フィルタだけを使って動画を重ねても透過にならないので、blend
フィルタを応用して透過したオーバーレイ動画を作る方法。コツは透過する画像の周りを背景となる映像と同じ映像をオーバーレイしてblend
のaverageで同じ映像同士の平均は同じというのを利用する。透過する映像の位置は overlay フィルタで指定する。前回記事の「ffmpeg で差分動画を作る」と同じように「:c0_opacity=.5」と等とすることで透過具合を変更することもできる。
追記 2015/01/15
識別子の c が表示されていなかったので c0 に変更した。