LoginSignup
2
1

More than 1 year has passed since last update.

Raspberry Pi 3B上でGstreamer経由の音声がうまく扱えなかった件

Posted at

1. 概要

Raspberry Pi 3BでGstreamer、WebRTCを使った色々なことをしているとき、マイクの音声を一緒に扱えないの?という話題が出たので試したり、失敗したときの記録。

2. 使用機器

  • Raspberry Pi Zero WH
    OSはBuster(Debian 10)
  • UVCカメラ: Buffalo BSW500M
  • 適当なイヤホン
  • マイクは手持ちがなかった(内蔵音源でごまかし)

3. 実験

話を持ち出した人いわく、Gstreamerで音は出なかったそうだ。

3.1. まずは試す

カメラの映像をRaspberry Pi 3Bで確認してみる。
サンプルデータ(カラーバー)を表示。VNC Viewer上である、SSHで接続したターミナルでやっても出ないので注意。
テスト映像「videotestsrc」が表示される。Gstreamerは正常動作していることがわかった。

gst-launch-1.0 videotestsrc ! autovideosink

次に音声版の「autoaudiosink」で試してみるが、イヤホンから音が聞こえてこない。単純には動かないようだ。

gst-launch-1.0 audiotestsrc ! autoaudiosink

3.2. そもそも音は出るのか?

実は音声出力ができない状態かもしれないので、音声テストとしてGstreamer以外を試してみる。

出た。イヤホンでピー音聞こえている。

speaker-test -t sine -f 600

これも出る。OSインストール時に勝手に入ったサンプル音源のようだ。

aplay -Dhw:1,0 /usr/share/sounds/alsa/Front_Center.wav

3.3 ハードウェア確認

いまさらだけど、音関係のデバイス確認。存在するし、認識もされている。
イヤホンだと1番ということになる。

pi@raspberrypi:~ $ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: b1 [bcm2835 HDMI 1], デバイス 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
  サブデバイス: 4/4
  サブデバイス #0: subdevice #0
  サブデバイス #1: subdevice #1
  サブデバイス #2: subdevice #2
  サブデバイス #3: subdevice #3
カード 1: Headphones [bcm2835 Headphones], デバイス 0: bcm2835 Headphones [bcm2835 Headphones]
  サブデバイス: 4/4
  サブデバイス #0: subdevice #0
  サブデバイス #1: subdevice #1
  サブデバイス #2: subdevice #2
  サブデバイス #3: subdevice #3

4. ALSA

Gstreamer, Raspberry, audioあたりで調べていると、alsaが良く出てくる。
ということは、AudioはALSA(alsasink)で扱わないとダメっぽい? 「autoaudiosink」はオートではないのか?
Raspberry Pi OSのせいなのか、Gstreamerのせいなのか分からない。

4.1 改めて実験

ピー音というかポー音というかとにかく聞こえた。

gst-launch-1.0 audiotestsrc ! alsasink

デバイス指定しても聞こえる。0にすると繋いでないHDMI側にでるらしく聞こえない。

gst-launch-1.0 audiotestsrc ! alsasink device=hw:1
2
1
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
2
1