2012-04-03 16 views
2

私は1つのオーディオと他のチャンネルの無音が再生されている2つのチャンネルを再生しようとしています。マルチチャネルオーディオを異なるインスタンスで再生する際にエラーが発生しましたか?

$ gst-launch \ 
    interleave name=i ! alsasink 
    filesrc location=/home/test1.mp3 \ 
     ! decodebin ! audioconvert \ 
     ! audio/x-raw-int,channels=1 ! i. \ 
    audiotestsrc wave=silence \ 
     ! decodebin ! audioconvert \ 
     ! audio/x-raw-int,channels=1 ! volume volume=1.0 ! i. 

10秒後には、最初に無音を再生し、2番目のチャンネルで一部の音声を再生したい。

$ gst-launch \ 
    interleave name=i ! alsasink \ 
    audiotestsrc wave=silence \ 
     ! decodebin ! audioconvert \ 
     ! audio/x-raw-int,channels=1 ! i. \ 
    filesrc location=/home/test2.mp3 \ 
     ! decodebin ! audioconvert \ 
     ! audio/x-raw-int,channels=1 ! volume volume=1.0 ! i. 

これは、2つの異なる端末でこれらのパイプラインを再生するか、1つをバックグラウンドで実行しながら、PC側で行うことができます。我々はgstalsasink.cでチェックするとき、それは非ブロックモードでsnd_pcm_openを呼び出している

Setting pipeline to PAUSED ... 
ERROR: Pipeline doesn't want to pause. 
ERROR: from element /GstPipeline:pipeline0/GstAlsaSink:alsasink0: Could not open audio device for playback. 
Device is being used by another application. 
Additional debug info: 
gstalsasink.c(697): gst_alsasink_open(): /GstPipeline:pipeline0/GstAlsaSink:alsasink0: 
Device 'default' is busy 
Setting pipeline to NULL ... 
Freeing pipeline ... 

:しかし、とき、私は、このようにその何かをam335xボード上の1つのパイプラインを演奏し、他の1を再生しようとしています。

CHECK (snd_pcm_open (&alsa->handle, alsa->device, SND_PCM_STREAM_PLAYBACK, 
     SND_PCM_NONBLOCK), open_error); 

なぜ、他のイベントがオーディオデバイスを使用するのをブロックするのですか?

PCサイドのalsasinkが完璧なので、誰も私の目標を達成するために何をすべきかを教えてもらえますか?

答えて

1

組み込みハードウェアのalsaデバイスを閉じるために少し時間がかかる可能性があります。どのプロセスがまだ開いているかをfuserで確認してください。ストリームの連続再生を開発するためにgnonlinを使用することも検討してください。これにより、既存のオーディオシンクが再利用されます。

+0

gnonlinは、時間がたつと2番目のパイプラインを再生する必要があるというリアルタイムのシナリオでは明確でないため、私の要件を満たしません。サイレントチャンネルが別のオーディオを再生するために使用される必要があります。そして、その罰金がどのようにPC側で同じパイプラインを使用している間、ターゲットボード上での投げエラー。 – Minion

+0

大丈夫なので、ユースケースはラジオストリームのようになり、アナウンスをオーバーダビングしたいのですか? – ensonic

+0

はい。最初のチャンネルで1つのオーディオだけが放送されているような場合は、今まではサイレントだった2番目のチャンネルで別のアナウンスを開始したいと思います。 – Minion

関連する問題