LoginSignup
1
0

GStreamerでWebカメラの映像とマイクロフォンの音声を合成して保存する

Last updated at Posted at 2024-03-16

はじめに

GStreamerは、マルチメディアデータを処理するためのパワフルなフレームワークであり、さまざまな用途に使用できます。本記事ではGStreamerを使用して、USBカメラからの映像と、USBカメラ内蔵でない(Settings => Sound => Input で指定していない)マイクロフォンを指定し、そこからの音声を合成して.webm形式で保存する方法を紹介します

作業環境
・Ubuntu 22.04.4 LTS \n \l
・GStreamer Core Library version 1.23.0.1
・x86_64 ガレリアの普通のPC
・入力映像:Webカメラ 640x360

結論

下記では改行を入れていますが、実際には改行を入れずに1行で書いてください

command
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! queue ! 
vp8enc ! queue ! mux.video_0 
pulsesrc device=(your device name) ! audioconvert ! queue ! 
vorbisenc ! queue ! mux.audio_0 
webmmux name=mux ! filesink location=test_vp9.webm

(your device name)については
gst-device-monitor-1.0で使用中のデバイスを探索し
class : Audio/Sourceのそれっぽいのを見つける。私の環境では下記を見つけました
gst-launch-1.0 pulsesrc device=alsa_input.pci-0000_0a_00.3.analog-stereo ! ...

結果

10秒ほどの動画の、映像と音声あるやつが観測できました
バッファローの400円のマイクロフォンなので音質がアレだった

おわりに

クラウドへのリアルタイム配信、同時にUSBメモリやSDカードに保存、という使い方もできそう

ちなみに

Webカメラの入力を640x360 => fullHD
それかvp8enc => vp9encに変更すると

Dropped 106281 samples. This is most likely because downstream can't keep up and is consuming samples too slowly.

などとコンソールに表示が出現。保存した映像はガタついたり音が途切れたり
x264encで言うところのtune=zerolatencyもなさそうなので、対応むずそう

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0