방송 설정의 경우 입력 장치의 오디오를 .wav 파일의 오디오와 믹싱하고 싶습니다. .wav 파일에는 방송 중 특정 시점에 음악에 추가하고 싶은 인트로, 대기 또는 종료 음악이 포함되어 있습니다.
여러 단계가 필요합니다.
- 두 개의 스트림을 추가/혼합
- 모노로 변환(또는 이 작업이 먼저 수행되어야 할 수도 있음)
- 방송 스트림과 VU 미터에 대한 스트림 분할
- 스트림을 로컬 오디오 출력으로 보냅니다.
이것이 가능하다고 확신하지만 아직 인터넷에서 해결책을 찾을 수 없습니다. alsa의 .asoundrc를 파헤쳐도 아직 결과가 나오지 않았습니다. alsa dmix가 믹싱을 하는 것 같지만 여기서는 내가 원하는 것이 아닙니다....
정말 어디서부터 시작해야 할지 모르겠습니다.
누군가 이것에 대해 좀 밝힐 수 있습니까? 부분적인 해결책도 괜찮을 것입니다!
답변1
가장 쉬운 방법은 Pulseaudio를 사용하는 것입니다. (ALSA로 할 수 있지만 구성하기가 어렵습니다.)
사운드를 생성하는 모든 것은 현재 출력(Pulseaudio 용어로 "싱크")에서 자동으로 믹싱되므로 믹싱에 대해 걱정할 필요가 없습니다. 으로 볼륨을 제어할 수 있으며 pavucontrol
, 애플리케이션 이름별로 마지막 볼륨을 기억합니다. 명령줄에서 wav 파일을 재생하는 데 사용할 수 있지만 paplay
다른 오디오 플레이어에서도 가능합니다.
싱크대가 모노인 경우 모노로의 변환이 자동으로 수행됩니다. 이를 위해 로컬 RaspPi 싱크를 구성할 수 없는 경우(저는 RaspPi를 소유하고 있지 않습니다.) 다음을 사용하여 "유사" 싱크를 추가할 수 있습니다.
pactl load-module module-null-sink sink_name=whatever
또는 Pulseaudio에서 다시 매핑해야 하는 것으로 밝혀지면 module-remap-sink
(아래 참조, 아직 직접 시도하지 않았습니다).
이 싱크 또는 로컬 RaspPi 싱크에는 .monitor
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
.
편집하다~을 위한알사:
먼저 사용 가능한 항목에 대해 읽어보세요.플러그인. 오디오를 darkice 등으로 라우팅하려면 "가상 사운드 카드"가 필요합니다. 이는 커널 모듈이므로 다음과 같은 작업을 수행하십시오.
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
오디오 그래버에 연결합니다.
가상 사운드 카드의 출력 측에는 다음과 같은 것이 있습니다.
hw: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
구성 경험이 없습니다.