GNU/Linux >> Belajar Linux >  >> Linux

ALSA Api:Bagaimana cara memainkan dua file wave secara bersamaan?

Anda dapat mengonfigurasi dmix ALSA plugin untuk memungkinkan beberapa aplikasi berbagi perangkat input/output.

Contoh konfigurasi untuk melakukannya adalah di bawah ini:

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
}

Ini melakukan hal berikut:

  • membuat perangkat baru menggunakan dmix plugin, yang memungkinkan banyak aplikasi berbagi aliran keluaran
  • membuat yang lain menggunakan dsnoop yang melakukan hal yang sama untuk input stream
  • menggabungkannya menjadi duplex baru perangkat yang akan mendukung input dan output menggunakan asym pengaya
  • beri tahu ALSA untuk menggunakan duplex yang baru perangkat sebagai perangkat default
  • beri tahu ALSA untuk menggunakan hw:0 untuk mengontrol perangkat default (alsamixer dan sebagainya)

Tempelkan ini di ~/.asoundrc atau /etc/asound.conf dan Anda harus melakukannya dengan baik.

Untuk informasi selengkapnya, lihat http://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing.


ALSA tidak menyediakan mixer. Jika Anda perlu memutar beberapa streaming audio secara bersamaan, Anda harus menggabungkannya sendiri.

Cara termudah untuk melakukannya adalah dengan mendekode file WAV ke float sampel, tambahkan, dan potong saat mengonversinya kembali ke sampel bilangan bulat.

Cara lainnya, Anda dapat mencoba membuka default perangkat audio (dan tidak perangkat keras seperti "hw:0") beberapa kali, satu kali untuk setiap streaming yang ingin Anda putar, dan berharap plugin dmix ALSA dimuat dan akan menyediakan fungsi pencampuran.


Linux
  1. Bagaimana Memberitahu Firefox Untuk Menggunakan Perangkat Alsa Lain?

  2. Bagaimana Cara Memutar File .swf?

  3. Bagaimana membandingkan dua konten tarball

  1. Bagaimana cara menggabungkan dua file menggunakan AWK?

  2. Bagaimana memprogram file pohon perangkat Linux .dts?

  3. Cara menyalin banyak file secara bersamaan menggunakan scp

  1. cara menggabungkan dua file secara konsisten baris demi baris

  2. Bagaimana menemukan / mendaftar semua file unik di dua direktori?

  3. Cara mendaftar Pohon Perangkat kernel