7

PCM サンプルの 2 つの異なるストリームがあります。どういうわけかそれらを混ぜて、同じ出力デバイスで ALSA で再生することは可能ですか?

ミキサーを使用すると可能かもしれないと読みましたが、ドキュメントが不足しているため、理解するのが難しいと感じています。これがどのように実装されるかについて、誰かが何らかの情報を提供してくれませんか (実際に実装されている場合)。

ありがとう!

4

2 に答える 2

4

そのためには、システムに .asoundrc ファイルがあるかどうかを確認してください。そこにない場合は、作成して /home フォルダーに配置できます。次の設定で更新します。

pcm.!default {
              type plug
              slave.pcm "dmixer"
}
pcm.dmixer  {
            type dmix
        ipc_key 1024
        slave {
          pcm "hw:1,0"
          period_time 0
              period_size 1024
          buffer_size 4096
          rate 44100
        }
        bindings {
          0 0
          1 1
        }
}
ctl.dmixer {
       type hw
       card 0
}

システム上のデバイスのリストを取得するために使用$aplay -lします。hw:X,Y は、ハードウェアのこのマッピングから取得されます。ここで、X はカード番号、Y はデバイス番号です。

次に、ターミナルを開き、最初の PCM ストリームを再生し $aplay -f cd pcm_sound1.wav ます。別のタブで、2 番目の PCM ストリームを再生します。 $aplay -f cd -D default pcm_sound2.wav

2 つの PCM データ ストリームが混在します。

乾杯、

于 2012-01-19T05:28:21.023 に答える
1

これが別の答えに値するかどうかはわかりません。HSC の回答と"ALSA Wiki - The Dmix Howto"の例を使用しました。Dmix のドキュメントは確かに少しイライラします。

ここ~/.asoundrcに私のために働く例があります。「バインディング」セクションは不要ですが、HOWTO には「マルチチャネル チップの動作が速くなる」と書かれています (気にするかどうかわかりません)。「0 1 1 0」をバインドすると、左右のチャンネルが切り替わります。「0 1 1 1」をバインドすると、右耳にゴミが入ります...明らかipc_keyに必須パラメーターです。ランダムな整数を選択しました。

# example 1
pcm.hw3mix {
    type dmix
    ipc_key 1939 # must be unique
    slave {
        pcm "hw:3"
        period_time 0
        period_size 1024 # must be power of 2
        buffer_size 4096
        rate 44100
    }
    bindings {
        0 0
        1 1
    }
}

pcm.!default hw3mix

最後の行は、私の新しいhw3mixデバイスをデフォルトのデバイスにします。

上記を簡略化して次のようにしました。

# example 2
pcm.hw3mix {
    type dmix
    ipc_key 1939 # must be unique
    slave { pcm "hw:3" }
}

pcm.!default hw3mix

そしてそれはうまくいくようです。

上記の ALSA Wiki リンクで提案されているように、次のようにさらに単純化できます。

# example 3
pcm.dsp0 {
    type plug
    slave.pcm "dmix"
}

pcm.!default dsp0

これはさらに次のように単純化できます。

# example 4
pcm.!default {
    type plug
    slave.pcm "dmix"
}

あるいは:

# example 5
pcm.!default plug:dmix

ただし、最後の 3 つの例では、Dmix プラグインのパラメーターを指定できません。複数のストリームを「hw:3」にミックスするデバイスを作りたかったのです。これはデフォルトのデバイスではないため、Dmix のパラメーターとして指定する必要があると思います。そのため、上記の 2 番目の例を使用しました。私の実際~/.asoundrcの には、「hw0mix」と呼ばれる「hw:0,0」のブロックもあるため、次の行のコメントを変更することで、ヘッドフォンとスピーカーの間で (新しく作成された) ストリームの出力を切り替えることができます。

#pcm.!default hw0mix
pcm.!default hw3mix

注意: 上記は "hw:0,0" や "hw:3" などのデバイスを指しています。さまざまな USB サウンド デバイスの安定したデバイス番号を確保する方法を見つけるのは少し難しかったです。こちらの手順を参照してください。 「同じ種類の複数のカードを注文する」の下。構成は、 のファイル内の 1 行で構成されます/etc/modprobe.d/。これが、再起動後も同じデバイスを参照するために 0 や 3 などの数字を取得する方法です。

于 2016-11-26T22:47:02.563 に答える