Ubuntu 18.04 LTSのセットアップ8 - ffmpegとJACKで動画撮影

インストール後のメモその8です。 (もはやインストールと関係ないという話もありますが。)

ffmpegでJACKからオーディオ入力して動画を撮りたかったので、いろいろ試しました。

まず、ffmpegのJACK対応版をビルドします。

./configure --enable-libjack
make -j8
make install

次にffmpegwebcamの入力確認。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 &

こんな画面が表示される。

f:id:ohac:20180701221507p:plain

ギターのノイズを目立たなくするためのEQを選択。 あと耳障りな周波数帯を押さえたりもしておく。

f:id:ohac:20180701222714p:plain

f:id:ohac:20180701222937p:plain

メトロノームとミキサーをインストールして立ち上げ。

sudo apt install gtklick jackmixer
gtklick &
jack_mixer &

f:id:ohac:20180701223018p:plain

f:id:ohac:20180701223031p:plain

あとは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

下記の記事を参考にしました。ありがとうございます。

kivantium.hateblo.jp

/usr/binとしているのはffmpegのビルドオプションがちょっと足りてなかったようで、 Ubuntuの標準パッケージのものを使う必要があったため。

出来上がった動画はこんな感じです。 PiTiViで文字入れとクロスフェードを使ってみました。

www.youtube.com