この記事は、NetBSD Advent Calendar 2025の14日目の記事です。
はじめに
mplayerで出力するオーディオデバイスを指定する方法は、pkgsrc/multimedia/mplayerをpulseaudioオプションを有効にして使っている私には有用です。 OSSしか使っていない場合にも、HDMIコネクターの内蔵されたマシンを利用している場合には、内蔵スピーカーとHDMI出力を切り替える必要があると思いますので、 有用かもしれません。
一方で、webcamの画像を画面に表示させるというのは、Video4Linux2サポートの確認をする以外には有用ではないかもしれません。 ですが、それ故に、デバイスを選択し、いろいろなモードを指定できることは重要かもしれません。
オーディオデバイスの初期設定
mplayerの設定の前に、私のマシンに特有かもしれませんが、初期設定をしておきます。 私のマシンは、以下のようにオーディオデバイスが認識されています。
hdaudio0 at pci3 dev 0 function 1: HD Audio Controller hdaudio0: interrupting at msi1 vec 0 hdaudio0: HDA ver. 1.0, OSS 4, ISS 0, BSS 0, SDO 1, 64-bit hdafg0 at hdaudio0: ATI R6xx HDMI hdafg0: HDMI00 2ch: Digital Out [Jack] hdafg0: HDMI01 2ch: Digital Out [Jack] hdafg0: 2ch/0ch 32000Hz 44100Hz 48000Hz PCM16 AC3 audio0 at hdafg0: playback audio0: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for playback spkr1 at audio0: PC Speaker (synthesized) wsbell at spkr1 not configured (snip) hdaudio1 at pci3 dev 0 function 6: HD Audio Controller hdaudio1: interrupting at msi4 vec 0 hdaudio1: HDA ver. 1.0, OSS 4, ISS 4, BSS 0, SDO 1, 64-bit hdafg1 at hdaudio1: Realtek product 0245 hdafg1: DAC00 2ch: Speaker [Built-In] hdafg1: DAC01 2ch: HP Out [Jack] hdafg1: ADC02 2ch: Mic In [Jack] hdafg1: 2ch/2ch 44100Hz 48000Hz 96000Hz 192000Hz PCM16 PCM20 PCM24 audio1 at hdafg1: playback, capture, full duplex, independent audio1: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for playback audio1: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for recording spkr2 at audio1: PC Speaker (synthesized) wsbell at spkr2 not configured
一方で、/dev以下は、このようになっています。 audio0はHDMI出力なので、このままでは内蔵スピーカーからは音を出すのが面倒です。 しかも、DRMKMSのサポートがないマシンなので、そもそもHDMI経由でオーディオ出力はできません。
$ ls -l /dev/audio* /dev/sound* lrwxr-xr-x 1 root wheel 11 May 11 2025 /dev/audio -> /dev/audio0 crw-rw-rw- 1 root wheel 42, 128 May 10 2025 /dev/audio0 crw-rw-rw- 1 root wheel 42, 129 May 10 2025 /dev/audio1 crw-rw-rw- 1 root wheel 42, 130 May 10 2025 /dev/audio2 crw-rw-rw- 1 root wheel 42, 131 May 10 2025 /dev/audio3 lrwxr-xr-x 1 root wheel 14 May 11 2025 /dev/audioctl -> /dev/audioctl0 crw-rw-rw- 1 root wheel 42, 192 May 10 2025 /dev/audioctl0 crw-rw-rw- 1 root wheel 42, 193 May 10 2025 /dev/audioctl1 crw-rw-rw- 1 root wheel 42, 194 May 10 2025 /dev/audioctl2 crw-rw-rw- 1 root wheel 42, 195 May 10 2025 /dev/audioctl3 lrwxr-xr-x 1 root wheel 11 May 11 2025 /dev/sound -> /dev/sound0 crw-rw-rw- 1 root wheel 42, 0 May 10 2025 /dev/sound0 crw-rw-rw- 1 root wheel 42, 1 May 10 2025 /dev/sound1 crw-rw-rw- 1 root wheel 42, 2 May 10 2025 /dev/sound2 crw-rw-rw- 1 root wheel 42, 3 May 10 2025 /dev/sound3
cd /dev ; ln -sf audio1 audio ; ln -sf audioctl1 audioctl ; ln -sf sound1 soundと
実行しても良いのですが、audiocfg default 1とすれば、同じことをしてくれます。
結果は、以下のようになりました。
これで/dev/audioを使って、内蔵スピーカーから音を出力できることができるようにします。
$ ls -l /dev/audio* /dev/sound* lrwxr-xr-x 1 root wheel 11 May 11 2025 /dev/audio -> /dev/audio1 crw-rw-rw- 1 root wheel 42, 128 May 10 2025 /dev/audio0 crw-rw-rw- 1 root wheel 42, 129 May 10 2025 /dev/audio1 crw-rw-rw- 1 root wheel 42, 130 May 10 2025 /dev/audio2 crw-rw-rw- 1 root wheel 42, 131 May 10 2025 /dev/audio3 lrwxr-xr-x 1 root wheel 14 May 11 2025 /dev/audioctl -> /dev/audioctl1 crw-rw-rw- 1 root wheel 42, 192 May 10 2025 /dev/audioctl0 crw-rw-rw- 1 root wheel 42, 193 May 10 2025 /dev/audioctl1 crw-rw-rw- 1 root wheel 42, 194 May 10 2025 /dev/audioctl2 crw-rw-rw- 1 root wheel 42, 195 May 10 2025 /dev/audioctl3 lrwxr-xr-x 1 root wheel 11 May 11 2025 /dev/sound -> /dev/sound1 crw-rw-rw- 1 root wheel 42, 0 May 10 2025 /dev/sound0 crw-rw-rw- 1 root wheel 42, 1 May 10 2025 /dev/sound1 crw-rw-rw- 1 root wheel 42, 2 May 10 2025 /dev/sound2 crw-rw-rw- 1 root wheel 42, 3 May 10 2025 /dev/sound3
オーディオデバイスを指定する
私はpkgsrc/multimedia/mplayerで、ossとSDL-1.2、PulseAudio経由でオーディオを再生できるようにしているので、それぞれを試してみます。 他にも設定できるパラメーターはあると思いますが…。
; OSSでデフォルトのオーディオデバイスで再生する場合 $ mplayer -ao oss ./test.mp4
; OSSで/dev/audio1で再生する場合 $ mplayer -ao oss:/dev/audio1 ./test.mp4
; PulseAudio経由で再生する場合 $ mplayer -ao pulse ./test.mp4
; SDL-1.2経由でPulseAudioで再生する場合 SDL_AUDIODRIVER=pulse mplayer -ao sdl ./test.mp4
; SDL-1.2経由でOSSの/dev/audioで再生する場合 SDL_AUDIODRIVER=dsp mplayer -ao sdl ./test.mp4
; SDL-1.2経由でOSSの/dev/audioで再生する場合 SDL_AUDIODRIVER=dsp mplayer -ao sdl ./test.mp4
; SDL-1.2経由でOSSの/dev/audio1で再生する場合 $ SDL_AUDIODRIVER=dsp AUDIODEV=/dev/audio1 mplayer -ao sdl ./test.mp4
webcamを開く
webcamにもいろいろ設定はあるはずですが、以下のようにすれば、Video4Linux2サポートの確認には良さそうです。
$ mplayer tv:// -tv driver=v4l2:device=/dev/video1:width=1280:height=720:outfmt=yv12 -fps 15
おわりに
とりあえず、これでwebcamやサウンドカードの動作確認をするのには十分そうです。 でも、今日時点のNetBSD/amd64-currentだと、オーディオ出力と入力の組み合わがおかしいような…。 ちゃんと調べた方が良いかもしれません。 勘違いだと良いのですが…。

