ALSAを使用してPCMデバイスにオーディオデータを再生したい。例として、このサンプル例をダウンロードしてPCで実行しました。現在サウンドカードを使用しているプロセスが他にない場合は、正常に機能します。ただし、他のプロセスがオーディオデバイスを使用している場合(つまり、メディアプレーヤーが曲を再生している場合)は何も再生されず、次のエラーが表示されます-
Playback open error: Device or resource busy
この例のソースコードを見ると、882行目のsnd_pcm_open関数がこのエラーをスローしていると言えます。別のプロセスが現在デバイスを使用しているため、デバイスがビジーであることが検出されます。
また、逆の方法を試しました。最初に例を開始してから、曲を開始しようとしました。この場合、メディアプレーヤーはアイドル状態のままで、プログレスバーのすぐ横に「アイドル」と表示されます(私はBansheeを使用しています)。私はsnd_pcm_open
、他のプロセスがそれを使用できないように、デバイスリソースの排他的権利を取得すると想定しています。
しかし、私はそれを望んでいません。PC内の他のプロセスがオーディオデータを出力するために同じデバイスを共有できるように、排他的権利を必要とせずにオーディオデバイスでサウンドを再生したいと思います。
どうやってやるの?他のプロセスも同じデバイスを共有できるように、PCMデバイスを開くにはどうすればよいですか?