放送設定の場合は、入力デバイスのオーディオを.wavファイルのオーディオとミキシングしたいと思います。 .wavファイルには、放送中のある時点で音楽に追加したいイントロ、スタンバイ、または終了音楽が含まれています。
いくつかのステップが必要です。
- 2つのストリームの追加/混合
- モノラルに変換する(または最初にこれを行う必要があるかもしれません)
- ストリームをブロードキャストストリームとVUテーブルに分割
- ローカルオーディオ出力にストリームを送信する
これは可能だと確信していますが、インターネット上で解決策を見つけることができません。 alsaの.asoundrcを掘り下げても結果は出ませんでした。 dmixもミキシングしているようですが、私は望んでいません...
本当にどこから始めるべきかわかりません。
誰かがこれを説明できますか?部分的な解決策も素晴らしいです!
答え1
最も簡単な方法はPulseaudioを使用することです。 (ALSAを使用してこれを実行できますが、設定するのは難しいです。)
サウンドを生成するすべては、現在の出力(Pulseaudio用語で「受信機」)で自動的にミキシングされるため、ミキシングについて心配する必要はありません。制御ボリュームを使用できpavucontrol
、アプリケーション名別に最後のボリュームを記憶します。コマンドラインを使用してwavファイルを再生できますが、paplay
他のオーディオプレーヤーも機能します。
受信機がモノラルの場合、自動的にモノラルに変換されます。これを行うためにローカルRaspPiリスナーを設定できない場合(RaspPiがないため、わかりません)、「偽の」リスナーを追加できます。
pactl load-module module-null-sink sink_name=whatever
または、Pulseaudioで再マッピングする必要があることが判明した場合module-remap-sink
(下記参照、直接試していません)。
.monitor
このシンクまたはローカルRaspPiシンクには、icecastなどに展開するために使用できる関連ソースがあります。
hw:1入力を選択した受信機の永続フィードに設定できます。
pacmd load-module module-loopback source="alsa_input.name_of_hw_1" sink="whatever_or_local_sink"
利用可能な受信者名を一覧表示できます。
pacmd list-sinks | grep name:
パラメータには山かっこなしで名前を使用してください。
私はそれが基本だと思います。利用可能なPulseaudioについて学ぶ基準寸法、pacmd help
使用したくない場合はお知らせしますpavucontrol
。
編集する~のためアルザス:
まず、利用可能なアイテムについて読んでください。プラグイン。オーディオをダーキスなどにルーティングするには、「仮想サウンドカード」が必要です。これはカーネルモジュールなので、次のようにしてください。
sudo modprobe snd-aloop pcm_substreams=2
/etc/modprobe.d
テストに使用し、作業中にファイルを挿入してみてください。ループバックがあるとしますhw:3,*,*
。
仮想サウンドカードの入力側には、次のものが必要です。
dmix "main_in" --> プラグ(slave.channels = 1) --> hw:3,0,0
だからあなたはaplay -D main_in sound.wav
実行することができます
alsaloop -C hw:0 -P main_in
オーディオコレクタに接続します。
仮想サウンドカードの出力から次のようになります。
ハードウェア: 3,1,0 --> dsnoop "main_out"
ローカルオーディオ出力でもう一度監視してください。
alsaloop -C main_out -P local_audio_out
darkice
その後、VUテーブルを直接実行できますmain_out
。さて、arecord -D main_out -d 0 -vv /dev/null
それは良いテストVUメーターです。
上記のリンクから構文の詳細を読んでください。私はこれを試してみません。矢印は-->
プラグインのマスターとスレーブの関係を示します。ループバックはカーネル空間と多数のユーザ空間アプリケーションを通過するため、遅延時間がひどいことがあります。
Pulseaudioが機能しない場合は、他のオプションがありますが、jack
設定の経験はありません。