2つのオーディオFIFOを同時にパイプし、一方にデータがないが優先されるものを1つのFIFO出力にパイプする

2つのオーディオFIFOを同時にパイプし、一方にデータがないが優先されるものを1つのFIFO出力にパイプする

私はスナップキャスト3 つのオーディオ ストリーム (FIFO) を持つように構成されたオーディオ サーバー:音楽放送、 そして出力スピーカーから音声が再生されます出力ストリーム、そして私の音楽プレーヤーは入力をパイプに流します音楽ストリーム。次のコマンドで音楽を出力にパイプして、スピーカーで音楽を聴くことができます。cat /tmp/music > /tmp/output

ここで、入力をオーバーライドする機能を実装したいと思います。放送ストリームは出力その代わりから(アラート)を再生する放送、一時的にストリームを無視して音楽放送が終了するまで。しかし、ほとんどの場合/tmp/ブロードキャスト空で入力がありません。dd bs=1 count=1 if=/tmp/broadcastブロードキャストでデータが利用可能になるまで、内容を覗き見するだけの簡単な試みでさえ、端末をハングさせます。そのため、次のようなことを試みます。ストリームをマージする失敗しました。

私は調べてみたffmpegおよびpulseaudioですが、そのような「選択的なオーバーライド」が可能かどうかはわかりません。FfmpegはさらにマルチFIFO入力にバグがある理想的な解決策は、また「良い音」を出すこと、つまり、放送が引き継がれるときにストリーム間で 1/4 秒のフェードを行うというものです。

編集走ってるUbuntu Desktop 18.04。おっと!

関連情報