PanasonicのカメラとのWiFi通信
PanasonicのLUMIX GシリーズのミラーレスカメラGX8を購入しました。 WiFi通信が使えるカメラは初めてなのでいろいろと実験してみました。
ここ数年のPanasonicのカメラはHTTPで接続すると/cam.cgiで色々と制御できるようなっているということが分かりました。
例
export host=192.168.54.1 curl -v "http://${host}/cam.cgi?mode=getstate"
ただ、この状態に持ってくるにはどうやら通信先のソフトをカメラ側に認識してもらう必要があるようです。
私はPanasonic純正のAndroidアプリImage Appをインストールしてカメラを同じアクセスポイントに接続することでこのあたりはパスしました。
このへんは試していないので省略しますが、:60606/xxxxxxxxxxxx/Server0/ddd
や/cam.cgi?mode=accctrl&type=req_acc&
や/cam.cgi?mode=setsetting&type=device_name&
の2つを適切なパラメータで呼ぶ必要があるようです。詳しくはGitHub内を"cam.cgi"
でコード検索してみてください。
カメラ側でWi-Fi機能、履歴から接続するを選びAPに接続すると「スマートフォンのアプリを立ち上げていない場合は、立ち上げてください」と表示されるので、ここで1回だけcam.cgiのgetstateを送って認識させます。IPはDHCPなので事前になんとかして調べておいてください。本体のIPアドレス表示機能がありますが、接続しないと表示されないので使えないです。私はとりあえず一度だけImage Appを立ち上げてIPを確認しましたが、もうちょっとよい方法が欲しいところです。arpingとかを使えばいいのかな。
追記: とりあえず以下のようなスクリプトでpingを打つことにしてみました。
seq 200 254 | xargs -P32 -i ping -c1 -W 1 192.168.24.{} | grep icmp_
/cam.cgi?mode=startstream&value=49152
みたいなコマンドを送るとvalueで指定したUDPポートにMotionJPEGっぽいデータが送られてきます。
これをffplayで再生できるとの情報もありましたが、私の環境ではだめでした。netcatで受信後にffplayやmplayerで再生することはできました。
どうもパケットを解析してffd8からffd9までのJPEG部分だけを取り出して保存していく必要があるようです。このあたりも検索すればいろいろと出てきます。
ただ、なぜか動画の上部しか表示されませんでした。動画の大きさは/cam.cgi?mode=setsetting&type=liveviewsize&value=qvga
で変えられたので、QVGAで同じようにしてみたところ、うまく再生できました。
大きさはVGAとQVGAの2択のようです。フレームレートもあまり期待できないようなので、リモート制御するとき以外はあまり使うことはなさそうです。
で、肝心のファイルのダウンロードはどうするのか調べたところ、ダウンロード自体はhttp://${host}:50001/DO${id}.${ext}
のような形式のようですが、既知のidを使ってもうまくダウンロードできませんでした。
その後、UPnPでいろいろとしないといけないことが分かってきました。どうやらUPnPでファイル一覧にアクセスしてからでないとダウンロードできないようです。あと拡張子はなんでもよさそうです。jpgやmp4などを指定しておけばよいでしょう。
UPnPの処理は長くなるので以下のGistを見てください。
:60606/Server0/CDS_control
をPOSTしているところがそれです。
結果がXMLで得られたらあとはそれを解析するだけです。
ここまでくればお好みのスクリプトで調理してあげればよいです。この例ではxml2を使っており、事前にsudo apt install xml2
しておく必要があります。
あとはtmp.xmlを見ればなんとなく分かるかと思いますが、/Result/DIDL-Lite/item/@id=
がIDで/Result/DIDL-Lite/item/upnp:class=
がファイルの種類です。
ダウンロードは先程のhttp://${host}:50001/DO${id}.${ext}
となります。
PanasonicのカメラはAPIの仕様が公開されていないため苦労しましたが、先人のハックのおかげでここまでできるようになりました。 GH4やGH5とかでもたぶんいけるのではないでしょうか。
WiFiでのダウンロードよりもSDカードやUSBマスストレージを使う方が速いですが、お手軽にダウンロードスクリプトを走らせてしばらく放置しておけばよいので使える場面はあるかと思います。
Ubuntu 18.04.1 LTSでDTM - Carlaのインストール
今回はCarlaのインストールです。
Carla is a fully-featured audio plugin host, with support for many audio drivers and plugin formats.
CarlaはLV2やVST, LADSPA, DSSIプラグインのホストアプリです。 あと、SF2やSFZ, GIGといったサウンドフォント/サンプラーデータのファイルが扱えます。
個人的にはSF2やGIGは自分で作ることはありませんが、SFZは自分で編集したりします。 特にドラム音源についてはDrumGizmoやHydrogen、DrMrといった専用のものはあまり使わずにSFZ化して使うようになりました。
と、スクリーンショットを取ってみて気付きましたが、SF2やSFZが扱えない...。 これについては後述します。
LV2などのプラグインは普通に使えます。Add Pluginを押して、上部から検索して追加します。 以下はeqを検索した結果です。
さて、ビルドについてですが、まず以下のリポジトリをgit cloneします。
あとはmakeしてsudo make installするだけなのですが、/usr/localに自分でビルドしたffmpegがインストールされているため、うまくビルドできませんでした。
以下のようにパッチをあててビルドが通るようになりましたが、あとでffmpeg側のビルド方法を変更して対処できることが分かりました。 一応メモしておきます。
Carla$ git diff diff --git a/source/Makefile.mk b/source/Makefile.mk index d24e8c13..c6ec9e12 100644 --- a/source/Makefile.mk +++ b/source/Makefile.mk @@ -209,7 +209,7 @@ HAVE_PULSEAUDIO = $(shell pkg-config --exists libpulse-simple && echo true) endif endif -HAVE_FFMPEG = $(shell pkg-config --exists libavcodec libavformat libavutil && echo true) +#HAVE_FFMPEG = $(shell pkg-config --exists libavcodec libavformat libavutil && echo true) HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true) HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true) HAVE_LINUXSAMPLER = $(shell pkg-config --atleast-version=1.0.0.svn41 linuxsampler && echo true)
ffmpeg側は以下のようにビルドすることで上記パッチは不要となります。
ffmpeg$ ./configure --enable-libjack --enable-shared --enable-pic --enable-libx264 --enable-gpl
make, sudo make install後、Carla側をmake cleanしてやりなおせばOKです。
で動かしてみたところ、VSTやLV2などはちゃんと動くのですが、先程も書いたようにSF2/SFZ/GIGが動きません。
調べてみたところ、外部ライブラリが必要だということが分かりました。
まずSF2についてはfluidsynthが必要となります。 以下のようにインストール。
sudo apt install libfluidsynth-dev fluidsynth
make featuresを実行すればどれが有効になっているか分かります。
make features
ビルドしなおして、CarlaのGUIかCLIでFluidR3_GM.sf2を読み込んでみます。
carla-single sf2 /usr/share/sounds/sf2/FluidR3_GM.sf2
問題なければJACK側に表示されます。
次にSFZ/GIGですが、linuxsamplerをインストールする必要があります。
linuxsamplerのライセンスはちょっと変わっているので、aptではインストールできません。 ここでは時前でビルドしてみました。
ビルドするにはbisonが必要なので以下のようにしてインストールします。
sudo apt install bison
サイトから以下の3つのtarボールをダウンロードします。
- libgig-4.1.0.tar.bz2
- liblscp-0.5.8.tar.gz
- linuxsampler-2.1.0.tar.bz2
libgig, liblscp, linuxsamplerの順に以下を実行しインストールする。
./configure make -j8 sudo make install
Carlaをビルドしなおして、CarlaのGUIかCLIで何かSFZやGIGを読み込んでみます。
SFZのサンプルとして自作音源を紹介しておきます。
SFZでインターネットを検索すると他にもたくさん音源がヒットすると思います。 多すぎるため、品質のよいものを探すのに苦労しますが。
SFZはどこかのKONTAKなんちゃらと違ってオープンなフォーマットなので、生データがあれば自作することが可能です。 個人的にはDrumDropsのデータを購入してSFZ化してドラム音源として使っています。
あとSF2はaptからいくつかインストールできるようです。 どんな音源なのか聴いていませんが、ためしにインストールしておくとよいかもしれません。
sudo apt install timgm6mb-soundfont opl3-soundfont fluid-soundfont-gs musescore-general-soundfont
Ubuntu 18.04.1 LTSでDTM - Cadenceのインストール
アップデートしたらlinux-image-4.15.0-29-lowlatencyがまともに動くようになってた。うれしい。 pic.twitter.com/GDUBnA2mPt
— OHASHI Hideya (@ohac) July 28, 2018
やっとlinux kernel 4.15.0-29-lowlatencyがちゃんと動作するようになりました。 電源ボタンからのスリープと復帰も動作しています。 メニューからスリープする方法はよく分かりませんが。
タスクバーみたいなところにownCloud、CPUモード切り替え、Cadenceのアイコンもちゃんと表示されています。 これで4.4.0-131-lowlatencyとおさらばできそうです。
さて、今回はCadenceをインストールしましたので、そのメモです。
Cadenceはこんなソフトです。
qjackctlよりも分かりやすくなっており、以下のような追加機能があります。
JACK以外のオーディオシステムとの連携はALSA(ループバックデバイス)かPulse Audioが選択できます。 ただし、ALSAしか使えないアプリは減ってきていますし設定も難しいので、Pulse Audioを使うのがよいかと思います。
ALSA MIDIとの連携は非常に重宝します。 JACKはMIDIも扱えるのですが、対応されていないアプリがたくさんあるため、これがないときついです。
Export HW...のボタンを押すと以下のようなダイアログボックスが表示されます。
そのあとStartを押すと連携されます。
あと、Toolsのタブからいろいろなツールを起動できます。
普通にビルドしてインストールするとCatiaというツールもインストールされます。
Buffer Sizeが動的に切り替えられるのは重宝します。 リアルタイム録音しないときはBuffer Sizeを大き目にしておくと音飛び(Xruns)が発生しにくくなります。
Meter In/Outは入出力をモニターできるので便利です。
XY ControlはバーチャルMIDIキーボードと汎用XYコントローラです。
ビルド・実行には以下の追加パッケージが必要でした。 これら以外にも必要ですが、これまでの記事の中でいろいろとインストール済みなので詳しくは調べていません。
sudo apt install \ libqt4-dev qt4-dev-tools python-qt4-dev python3-pyqt4 pyqt4-dev-tools \ python3-pyqt5 pyqt5-dev-tools python3-qtpy python3-dbus.mainloop.pyqt5 \ cpufreqd indicator-cpufreq
あとは本家からgit cloneしてきてmakeして、sudo make installするだけだったと思います。
Ubuntu 18.04 LTSでDTM - ffmpegでデスクトップのキャプチャとQsynthなど
ffmpegでデスクトップのキャプチャができたので、その手順メモです。
以下のようなコマンドでx11grabから画面をキャプチャできます。 長いのでスクリプトにしています。
#!/bin/bash /usr/local/bin/ffmpeg \ -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi \ -filter_threads 3 \ -thread_queue_size 128 \ -video_size 1920x1080 \ -f x11grab -i :0.0+0,54 \ -thread_queue_size 512 \ -itsoffset 0.25 \ -f jack -i ffmpeg \ -framerate 60 -r 10 -vf 'format=nv12|vaapi,hwupload' \ -c:v h264_vaapi \ -acodec pcm_f32le \ -y ram/out.mkv
前回のやつから変わったのは-video_sizeの位置とサイズ、 -f x11grabとDISPLAYの0.0とそのオフセット(+0,54)。 あと、-itsoffsetのずれ具合です。
WebCamからの動画も撮りたい場合は手抜きですが、 以下のようなコマンドで画面に表示したものをキャプチャすればよいです。
/usr/local/bin/ffmpeg -f v4l2 -i /dev/video1 -pix_fmt yuv420p -f xv display
できあがったram/out.mkvはそのままでは色々と不都合があるらしく、 vlcで表示するとうまくいきませんでした。ffplayで見ると問題ないです。
以下のコマンドでmp4に変換すればvlcでも問題なく扱えるようになり、 TwitterやYouTubeへの投稿も可能になります。
/usr/bin/ffmpeg -i ram/out.mkv -vcodec libx264 -pix_fmt yuv420p -strict -2 -acodec aac $(date +%Y-%m-%d_%H-%M-%S).mp4
せっかくなのでLinuxでの音楽制作に関する動画を作成してみました。 音源はGMサウンドフォントを使用し、Qsynthでエフェクター付きで鳴らしてみました。 MIDI入力はVirtual MIDI Piano Keyboard(vmpk)を使いました。
インストールはこんな感じ。
sudo apt install vmpk qsynth
vmpkは普通のキーボードで演奏することもできます。 ベロシティがなく2オクターブしかないので、確認・打ち込み用ですが、 MIDIキーボードがなくても試せるので便利です。
Ubuntu 18.04 LTSのセットアップ8 - ffmpegとJACKで動画撮影
インストール後のメモその8です。 (もはやインストールと関係ないという話もありますが。)
ffmpegでJACKからオーディオ入力して動画を撮りたかったので、いろいろ試しました。
まず、ffmpegのJACK対応版をビルドします。
./configure --enable-libjack make -j8 make install
次にffmpegでwebcamの入力確認。video1は外部USBに接続したカメラです。
ffmpeg -f v4l2 -i /dev/video1 -pix_fmt yuv420p -f xv display
そしてJACKを使ったキャプチャと変換。 試行錯誤した結果、以下のようになりました。
ffmpeg \ -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi \ -filter_threads 3 \ -thread_queue_size 128 \ -f v4l2 -i /dev/video1 \ -thread_queue_size 128 \ -itsoffset 1.95 \ -f jack -i ffmpeg \ -video_size vga -framerate 60 -r 10 -vf 'format=nv12|vaapi,hwupload' \ -c:v h264_vaapi \ -acodec pcm_f32le \ -y ram/out.mkv
解説
- VAAPIを使うためのオプション
- スレッド数を指定
- HTをOFFにしたため、デフォルトの8コアではなく、4コアのうちの3つだけ使うイメージで。
- thread_queue_size は数を増やせとの警告が出ていたので適当に増やした。
- itsoffsetは動画と音声がずれていたので調整した。
- ramはtmpfsでマウントしたディレクトリ
だいたいこんな感じです。
CPUはパフォーマンスモードにして、HTをOFFにします。
sudo cpufreq-set -g performance sudo sh -c 'echo 0 > /sys/devices/system/cpu/cpu4/online' sudo sh -c 'echo 0 > /sys/devices/system/cpu/cpu5/online' sudo sh -c 'echo 0 > /sys/devices/system/cpu/cpu6/online' sudo sh -c 'echo 0 > /sys/devices/system/cpu/cpu7/online' cat /sys/devices/system/cpu/cpu?/online
RAMディスクもマウントしておきます。
sudo mount -t tmpfs tmpfs ram
あとはギターを録音するためにcalf-pluginsをインストール。 calfjackhostで実行。
sudo apt install calf-plugins calfjackhost &
こんな画面が表示される。
ギターのノイズを目立たなくするためのEQを選択。 あと耳障りな周波数帯を押さえたりもしておく。
メトロノームとミキサーをインストールして立ち上げ。
sudo apt install gtklick jackmixer gtklick & jack_mixer &
あとはJACKで適切につなぎあわせて、いざ録画。
最後に動画編集のPiTiViをインストール。
sudo apt install pitivi pitivi
編集してmkv形式でレンダリングすればYouTubeにアップロードできる。
Twitterに投稿する場合はffmpegで変換する必要があった。 PiTiViから直接生成する方法はよく分からなかった。
/usr/bin/ffmpeg -i input.mkv -vcodec libx264 -pix_fmt yuv420p -strict -2 -acodec aac output.mp4
下記の記事を参考にしました。ありがとうございます。
/usr/binとしているのはffmpegのビルドオプションがちょっと足りてなかったようで、 Ubuntuの標準パッケージのものを使う必要があったため。
出来上がった動画はこんな感じです。 PiTiViで文字入れとクロスフェードを使ってみました。
Ubuntu 18.04 LTSのセットアップ7 - JACK優先度とCPU
インストール後のメモその7です。
audioグループへの参加。
$ groups ohashi adm cdrom sudo dip plugdev lpadmin sambashare
audioがないことを確認。
$ sudo adduser $USER audio ユーザー `ohashi' をグループ `audio' に追加しています... ユーザ ohashi をグループ audio に追加 完了。
いったんログアウト。と思ったがアップデートがあったので再起動。
$ groups ohashi adm cdrom sudo audio dip plugdev lpadmin sambashare
audioが追加された。
$ sudo vi /etc/security/limits.conf
で以下を追加。
@audio - rtprio 99 @audio - memlock unlimited @audio - nice -19
niceの行はよく分かってないけどググったら出てきたから一応入れてみた。
念のため、またログアウト・ログインする。一緒にやっておけばよかった。
qjackctlを立ち上げて、設定。
リアルタイムをチェック、レイテンシの許容度やPCの性能に合わせてバッファサイズ(フレームとピリオド数)を設定。プライオリティを最高の99に設定。
最後に開始を押して、音が出れば成功。
メトロノームでも鳴らしてみる。
$ jack_metro -b 60
systemにドラッグして接続。
CPUの動作周波数の設定ができるようにする。
$ sudo apt install cpufrequtils
現状こんな感じ。
$ cpufreq-info | head -13 cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 Report errors and bugs to cpufreq@vger.kernel.org, please. analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 0.97 ms. hardware limits: 800 MHz - 3.80 GHz available cpufreq governors: performance, powersave current policy: frequency should be within 800 MHz and 3.80 GHz. The governor "powersave" may decide which speed to use within this range. current CPU frequency is 900 MHz.
900 MHzで動作していて、省電力モードっぽい。 なお、linux kernelは事情があり4.4.0-122-lowlatencyを使用している。
governorsにはperformanceとpowersaveがあるので、performanceに切り替えてみる。
$ sudo cpufreq-set -g performance $ cpufreq-info | head -13 cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 Report errors and bugs to cpufreq@vger.kernel.org, please. analyzing CPU 0: driver: intel_pstate CPUs which run at the same hardware frequency: 0 CPUs which need to have their frequency coordinated by software: 0 maximum transition latency: 0.97 ms. hardware limits: 800 MHz - 3.80 GHz available cpufreq governors: performance, powersave current policy: frequency should be within 800 MHz and 3.80 GHz. The governor "performance" may decide which speed to use within this range. current CPU frequency is 3.65 GHz. $ cpufreq-info | grep current.CPU current CPU frequency is 3.60 GHz. current CPU frequency is 3.61 GHz. current CPU frequency is 3.67 GHz. current CPU frequency is 3.64 GHz. current CPU frequency is 3.53 GHz. current CPU frequency is 3.56 GHz. current CPU frequency is 3.70 GHz. current CPU frequency is 3.70 GHz.
ちなみにHyper Threadingは切った方がよいらしい。(今は切ってない)
powersaveに戻してみる。
$ sudo cpufreq-set -g powersave $ cpufreq-info | grep current.CPU current CPU frequency is 900 MHz. current CPU frequency is 1.24 GHz. current CPU frequency is 922 MHz. current CPU frequency is 1.02 GHz. current CPU frequency is 900 MHz. current CPU frequency is 900 MHz. current CPU frequency is 1.12 GHz. current CPU frequency is 900 MHz.
コマンドだと面倒くさいが、後でCadenceとCatiaをインストールするので、 そこからGUIで操作可能になる。同じくGUIでJACKのバッファサイズも動的に切り替えられる。
リスニングではバッファ多めのpowersaveで、制作時はバッファ少なめのperformanceでといった運用が可能に。
Ubuntu 18.04 LTSのセットアップ6 - ffmpeg
インストール後のメモその6です。
ffmpegをビルドする。
この頃はハードウェアでのエンコーディングを知らなかったが、 その後、VAAPIを使うとCPUパワーをほとんど使わずにH.264にエンコーディングできるということを知った。
ffmpeg h264_vaapi encoding test on Linux https://t.co/tg82ylJPmg via @YouTube 今日の成果です。
— OHASHI Hideya (@ohac) 2017年7月8日
ということで以下からgit cloneする。
ビルドに必要なパッケージは以下である程度揃うはず。
sudo apt build-dep ffmpeg
./configure を実行。hwaccelsがEnabledになっていることを確認。
Enabled hwaccels: h263_vaapi mpeg1_xvmc vc1_vaapi h264_vaapi mpeg2_vaapi vc1_vdpau h264_vdpau mpeg2_vdpau vp8_vaapi hevc_vaapi mpeg2_xvmc vp9_vaapi hevc_vdpau mpeg4_vaapi wmv3_vaapi mjpeg_vaapi mpeg4_vdpau wmv3_vdpau mpeg1_vdpau
makeを実行。マルチコアなら-j8とか付けてもいい。
終わったら sudo make install し、/usr/local/binにインストール。
最後に動作確認。
$ which ffmpeg /usr/local/bin/ffmpeg $ ffmpeg -version|head -1 ffmpeg version 3.4.2-2 Copyright (c) 2000-2018 the FFmpeg developers $ ffmpeg -hwaccels 2>/dev/null Hardware acceleration methods: vdpau vaapi cuvid $ ffmpeg -encoders 2>/dev/null | grep vaapi V..... h264_vaapi H.264/AVC (VAAPI) (codec h264) V..... hevc_vaapi H.265/HEVC (VAAPI) (codec hevc) V..... mjpeg_vaapi MJPEG (VAAPI) (codec mjpeg) V..... mpeg2_vaapi MPEG-2 (VAAPI) (codec mpeg2video) V..... vp8_vaapi VP8 (VAAPI) (codec vp8) V..... vp9_vaapi VP9 (VAAPI) (codec vp9) $ ffmpeg -decoders 2>/dev/null | grep cuvid V..... h264_cuvid Nvidia CUVID H264 decoder (codec h264) V..... hevc_cuvid Nvidia CUVID HEVC decoder (codec hevc) V..... mjpeg_cuvid Nvidia CUVID MJPEG decoder (codec mjpeg) V..... mpeg1_cuvid Nvidia CUVID MPEG1VIDEO decoder (codec mpeg1video) V..... mpeg2_cuvid Nvidia CUVID MPEG2VIDEO decoder (codec mpeg2video) V..... mpeg4_cuvid Nvidia CUVID MPEG4 decoder (codec mpeg4) V..... vc1_cuvid Nvidia CUVID VC1 decoder (codec vc1) V..... vp8_cuvid Nvidia CUVID VP8 decoder (codec vp8) V..... vp9_cuvid Nvidia CUVID VP9 decoder (codec vp9) $ ffmpeg -decoders 2>/dev/null | grep vdpau V....D h264_vdpau H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration) (codec h264) V....D mpeg1video_vdpau MPEG-1 video (VDPAU acceleration) (codec mpeg1video) V....D mpegvideo_vdpau MPEG-1/2 video (VDPAU acceleration) (codec mpeg2video) V....D mpeg4_vdpau MPEG-4 part 2 (VDPAU) (codec mpeg4) V....D vc1_vdpau SMPTE VC-1 VDPAU (codec vc1) V....D wmv3_vdpau Windows Media Video 9 VDPAU (codec wmv3)
webcamのキャプチャ確認。
$ man ffmpeg 2>/dev/null | grep video4 ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg $ ffmpeg -f video4linux2 -i /dev/video0 /tmp/out.mpg
再生。vlcが最もCPU負荷が軽いようだ。
$ ffplay /tmp/out.mpg $ ffmpeg -re -i /tmp/out.mpg -f xv display $ vlc /tmp/out.mpg
$ ffmpeg -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -f video4linux2 -i /dev/video0 -vf 'format=nv12|vaapi,hwupload' -c:v h264_vaapi -y /tmp/out.mkv
画面のキャプチャ例。
$ ffmpeg -vaapi_device /dev/dri/renderD128 -hwaccel vaapi -hwaccel_output_format vaapi -f x11grab -i :0.0+100,100 -video_size vga -framerate 30 -vf 'format=nv12|vaapi,hwupload' -c:v h264_vaapi -y /tmp/out.mkv
VDPAUを有効にして再生したが、効果はいまいち。vlcが一番よさそう。
sudo apt install vdpauinfo libvdpau-va-gl1 vdpau-va-driver VDPAU_DRIVER=va_gl vdpauinfo VDPAU_DRIVER=va_gl ffmpeg -hwaccel vdpau -re -i /tmp/out.mkv -pix_fmt yuv420p -f xv display