GNU/Linux >> Linux の 問題 >  >> Linux

ALSA Api:2 つの wave ファイルを同時に再生するには?

ALSA の dmix を設定できます 複数のアプリケーションが入出力デバイスを共有できるようにするプラグイン

これを行う構成の例を以下に示します:

pcm.dmixed {
    type dmix
    ipc_key 1024
    ipc_key_add_uid 0
    slave.pcm "hw:0,0"
}
pcm.dsnooped {
    type dsnoop
    ipc_key 1025
    slave.pcm "hw:0,0"
}

pcm.duplex {
    type asym
    playback.pcm "dmixed"
    capture.pcm "dsnooped"
}

# Instruct ALSA to use pcm.duplex as the default device
pcm.!default {
    type plug
    slave.pcm "duplex"
}
ctl.!default {
    type hw
    card 0
}

これは次のことを行います:

  • dmix を使用して新しいデバイスを作成します 複数のアプリが出力ストリームを共有できるようにするプラグイン
  • dsnoop を使用して別のものを作成します 入力ストリームに対して同じことを行います
  • これらを新しい duplex にマージします asym を使用した入出力をサポートするデバイス プラグイン
  • 新しい duplex を使用するように ALSA に指示します デフォルトのデバイスとしてのデバイス
  • ALSA に hw:0 を使用するように指示する デフォルトのデバイス (alsamixer など) を制御する

これを ~/.asoundrc のどちらかに貼り付けます または /etc/asound.conf

詳細については、http://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing を参照してください。


ALSA はミキサーを提供しません。複数のオーディオ ストリームを同時に再生する必要がある場合は、それらを自分でミックスする必要があります。

これを実現する最も簡単な方法は、WAV ファイルを float にデコードすることです。 サンプルを追加し、整数サンプルに変換するときにクリップします。

または、デフォルトを開いてみることができます オーディオ デバイス (および ではない "hw:0" のようなハードウェア デバイス) を複数回 (再生するストリームごとに 1 回)、dmix ALSA プラグインが読み込まれ、ミキシング機能が提供されることを期待します。


Linux
  1. .swfファイルを再生する方法は?

  2. 2 つの tarball のコンテンツを比較する方法

  3. AWK を使用して 2 つのファイルをマージする方法は?

  1. 2 つの CSV ファイルを結合するには?

  2. 2 つの XML ファイルを比較するにはどうすればよいですか?

  3. 2 つのディレクトリにまたがるすべての一意のファイルを検索/一覧表示する方法は?

  1. Firefoxに別のAlsaデバイスを使用するように指示する方法は?

  2. 2 つのファイルを 1 行ずつ一貫してマージする方法

  3. カーネル デバイス ツリーを一覧表示する方法