0

.asoundrcホームディレクトリのファイルに次のコードがあります-

pcm.lol
{
    type dmix
    ipc_key 1024
    ipc_key_add_uid true
    slave{
        pcm "hw:0,0"
        period_time 125000
        rate 48000
        format S32_LE
        channels 2
    }
}

このサンプル例を実行すると、正常に動作します(デバイス名をに変更しましたplug:lol)。ヘッドホンで音が鳴ります。この問題は、2つ以上のプロセスが同時にオーディオデータを出力しようとしたときに発生します。この場合、後のプロセスではオーディオデータを正しく出力できません。

たとえば、曲を再生しているメディアプレーヤーを実行してから、その例を実行してみました。音が聞こえず、メディアプレーヤーで再生されている音楽しか聞こえませんでした。この例を最初に実行してからメディアプレーヤーを実行すると、同様のことが起こります。この場合、例からのオーディオ出力のみを聞きます。

どうすればこの問題を解決できますか?pcmデバイスの構成にエラーはありますか?または、サンプルコードで追加のPCM構成パラメーターを提供する必要がありますか?

また、このような構成ファイルを使用するのではなく、プログラムでこの論理デバイス構成を作成できれば、本当に良かったでしょう。

4

2 に答える 2

0

問題は、サウンド出力がデフォルトでhw0,0のままであるということだと思いますが、デフォルトでlolにしたいので、ALSA Webサイトの例に従い、の先頭に以下を追加する必要があります。 asoundrc:

pcm.!default {
    type plug
    slave.pcm "lol"
}

残念ながら、私は.asoundrcをプログラムで構成する方法を知りません。

于 2011-11-21T14:43:28.073 に答える
0

私が検索して確認した限り、ALSAでこれを行う具体的な方法は明らかにありません。組み込みのdefaultデバイスを複数のプロセス間で共有できますが、他の構成ではこの機能が提供されませんでした。また、ALSAデバイスを構成するプログラム的な方法が見つかりませんでした。これを行うには、構成ファイルが唯一の方法のようです。

于 2011-12-08T20:20:29.747 に答える