GNU/Linux >> Znalost Linux >  >> Linux

ALSA Api:Jak přehrávat dva soubory wave současně?

Můžete nakonfigurovat dmix ALSA plugin umožňující více aplikacím sdílet vstupní/výstupní zařízení.

Příklad konfigurace, jak to provést, je níže:

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
}

To provede následující:

  • vytvoří nové zařízení pomocí dmix plugin, který umožňuje více aplikacím sdílet výstupní proud
  • vytvoří další pomocí dsnoop který dělá totéž pro vstupní proud
  • sloučí je do nového duplex zařízení, které bude podporovat vstup a výstup pomocí asym plugin
  • řekněte společnosti ALSA, aby použila nový duplex zařízení jako výchozí zařízení
  • řekněte společnosti ALSA, aby použila hw:0 k ovládání výchozího zařízení (alsamixer atd.)

Vložte toto buď do ~/.asoundrc nebo /etc/asound.conf a měli byste být připraveni jít.

Další informace najdete na http://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing.


ALSA nedodává mixér. Pokud potřebujete přehrávat více audio streamů současně, musíte je smíchat sami.

Nejjednodušší způsob, jak toho dosáhnout, je dekódovat soubory WAV na float samply, přidejte je a ořízněte je při převodu zpět na celočíselné vzorky.

Případně můžete zkusit otevřít výchozí zvukové zařízení (a ne hardwarové zařízení jako "hw:0") několikrát, jednou pro každý stream, který chcete přehrát, a doufejte, že je načten plugin dmix ALSA a poskytne funkci mixování.


Linux
  1. Jak říct Firefoxu, aby používal jiné zařízení Alsa?

  2. Jak porovnat obsah dvou tarballů

  3. Jak programovat soubory stromu zařízení Linux .dts?

  1. Jak spojit dva textové soubory v Linuxu

  2. Jak spojit dva soubory CSV?

  3. Jak mohu porovnat dva soubory XML?

  1. Jak přehrávat soubory .swf?

  2. Jak sloučit dva soubory pomocí AWK?

  3. jak spojit dva soubory konzistentně řádek po řádku