hoge diary - November 27, 2005

[Linux] dmix

複数のアプリケーションから同時に音を鳴らすために,今まで私は aRtsEsounD を用いていました.

Linux のサウンド出力に alsa を使っている場合は dmix がサウンドのミキシングを行ってくれると聞き,試してみました.

HOWTO ALSA sound mixer aka dmix - Gentoo Linux Wiki によると,This device can be dmix, which doesn't need to be configured as it exists by default. とあるので,とりあえず何もせずにそのまま試してみることにします.

サウンドデーモンを一通り kill した後,alsaplayer を 2 個起動して両方から音を鳴らすテストをしてみました.

$ alsaplayer -o alsa -d default hoge.mp3 &
(hoge.mp3 が鳴り始めるまで待つ)
$ alsaplayer -o alsa -d default hoge.mp3 &

ちゃんと 2 個同時に再生されました.出力先が default でも問題ないようです.

次に alsaplayer を停止し,MPlayer から音を鳴らしてみます.

$ mplayer -ao alsa hoge.avi
MPlayer 1.0pre7try2-3.3.6 (C) 2000-2005 MPlayer Team
(中略)
alsa-init: 1 soundcard found, using: default
alsa: 44100 Hz/2 channels/4 bpf/60208 bytes buffer/Signed 16 bit Little Endian
AO: [alsa] 44100Hz 2ch s16le (2 bps)
Building audio filter chain for 44100Hz/2ch/s16le -> 44100Hz/2ch/s16le...
(中略)
[mpeg4 @ 0x863b0e0]frame skip 8t:  0.000   1/  1 ??% ??% ??,?% 0 0 78%
[mpeg4 @ 0x863b0e0]frame skip 8t: -0.003   2/  2 ??% ??% ??,?% 0 0 78%
alsa-space: xrun of at least 0.106 msecs. resetting stream?,?% 0 0 99%
alsa-space: xrun of at least 0.068 msecs. resetting stream?,?% 2 0 99%
alsa-space: xrun of at least 0.106 msecs. resetting stream0.5% 3 0 99%
alsa-space: xrun of at least 0.062 msecs. resetting stream0.5% 5 0 99%
alsa-space: xrun of at least 0.058 msecs. resetting stream0.5% 6 0 99%
...

フレームレートがもの凄く低下して再生されます.何故でしょう.とりあえず出力先を default から dmix に切り替えてみます.

$ mplayer -ao alsa:device=dmix hoge.avi
MPlayer 1.0pre7try2-3.3.6 (C) 2000-2005 MPlayer Team
(中略)
AUDIO: 22050 Hz, 1 ch, s16le, 352.8 kbit/100.00% (ratio: 44100->44100)
(中略)
Checking audio filter chain for 22050Hz/1ch/s16le -> 22050Hz/2ch/s16le...
AF_pre: 22050Hz/1ch/s16le
alsa-init: 1 soundcard found, using: dmix
alsa: 48000 Hz/2 channels/4 bpf/65536 bytes buffer/Signed 16 bit Little Endian
AO: [alsa] 48000Hz 2ch s16le (2 bps)
Building audio filter chain for 22050Hz/1ch/s16le -> 48000Hz/2ch/s16le...
(中略)
A:  21.4 V:  42.4 A-V:-21.014 ct: -4.129 1272/1272  6%  0%  0.1% 34 0 48%

一番下の強調箇所を観ると明らかですが,音声と映像がズレています.映像の方が速く再生されています.

これを解決するべく,HOWTO ALSA sound mixer aka dmix - Gentoo Linux Wikiにあるように 44,100kHz にリサンプリングしてから再生してみました.ここではコマンドラインからリサンプラの使用を指示しました.

$ mplayer -ao alsa:device=dmix -af resample=44100 hoge.avi
MPlayer 1.0pre7try2-3.3.6 (C) 2000-2005 MPlayer Team
(中略)
AUDIO: 22050 Hz, 1 ch, s16le, 352.8 kbit/100.00% (ratio: 44100->44100)
(中略)
Checking audio filter chain for 22050Hz/1ch/s16le -> 22050Hz/2ch/s16le...
AF_pre: 44100Hz/1ch/s16le
alsa-init: 1 soundcard found, using: dmix
alsa: 48000 Hz/2 channels/4 bpf/65536 bytes buffer/Signed 16 bit Little Endian
AO: [alsa] 48000Hz 2ch s16le (2 bps)
Building audio filter chain for 22050Hz/1ch/s16le -> 48000Hz/2ch/s16le...
(中略)
A: 363.7 V: 363.7 A-V: -0.027 ct: -9.155 10912/10912  7%  0%  0.6% 8 0 45%

音と映像のズレがなくなりました.めでたしめでたし.

とりあえず全てのアプリケーションの音声出力を dmix に切り替えるように設定しました.これでサウンドデーモンが不要になりました.

なお,~/.asoundrc は作っていません.しばらく dmix を使ってみます.

コメント

p2 (posted on: Sun Nov 27 23:38:18 JST 2005)

なんか、平和な感じが漂ってますな :-。

pakuchan (posted on: Mon Nov 28 00:19:13 JST 2005)

今はおそらく平和です.今は...

名前(何でも可):

テキスト(http:// を含む内容は投稿できません):

トラックバック

トラックバック URI: https://www.pakunet.jp/hoge/trackback/2005112701

トラックバックはありません.


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Thu Nov 01 01:16:25 JST 2007