나는 mpd를 사용하여 http
.
그러나 이것은 내 mpd 데이터베이스에 있는 노래에만 작동합니다. 나는 종종 내 브라우저에서 콘텐츠를 재생하고 싶고 그 내용도 스트리밍되기를 원합니다 mpd
.
스피커 대신 pulse audio
출력을 라우팅하는 방법이 있습니까 ?mpd
답변1
mpd는 펄스 오디오 입력 소스를 허용하지 않으므로 펄스 오디오를 라우팅할 직접적인 방법이 없습니다.~을 통해mpd.
그러나 gstreamer의 도움과 약간의 영리함을 사용하면 달성하려는 작업이 여전히 가능합니다. 나는 몇 년 전에 이 일을 해냈습니다.
나는 썼다이 프로그램이 다이어그램의 "Gstreamer 파이프라인 스크립트" 구성 요소를 구현합니다.
스트림 다이어그램 http://tiyukquellmalz.org/sean/stream.svg
다이어그램을 요약하면 다음과 같습니다.
- mpd는 디스크에서 음악 파일을 읽고, 디코딩한 다음,
module-null-sink
pulseaudio 유형의 오디오 출력으로 "재생"합니다. - 컴퓨터에서 사운드를 출력하는 다른 프로그램(Adobe Flash, gnome Shell의 경고음, 웹 브라우저 등)도 해당 오디오 출력을
module-null-sink
pulseaudio로 보냅니다(시스템의 기본 오디오 장치로 설정됨). . - 출력 에는 소스가
module-null-sink
있어.monitor
널 싱크로 푸시된 오디오를 가져와 마이크와 같은 입력 장치인 것처럼 다시 "캡처"할 수 있습니다. - Pulseaudio는 mpd, 웹 브라우저 및 pulseaudio를 사용하는 모든 것을 포함하여 전체 컴퓨터에 있는 모든 오디오 프로그램의 소프트웨어 믹싱을 즉시 수행합니다.
- 내가 작성한 프로그램
tribblify
은 GStreamer를 사용하여 mpd와 시스템의 다른 프로그램의 혼합 오디오를 포함하는 pulseaudio 널 싱크 모니터 오디오를 캡처합니다. MP3 인코딩을 수행합니다. 그런 다음 Shoutcast/icecast 서버로 스트리밍하세요.tribblify
본질적으로 "스트리밍 소스"가 됩니다. - 프로그램
tribblify
은 mpd가 재생 중인 오디오의 태그를 변경하는 시점을 자동으로 감지하고 해당 태그를 샤우트캐스트 스트림 아래로 푸시합니다. - 동일한 컴퓨터나 다른 컴퓨터에 있을 수 있는 icecast 또는shoutcast 서버는 결과를 연결된 모든 클라이언트로 스트리밍합니다.
답변2
예 - 여기서 핵심은 ALSA 루프백 기능입니다. 따라서 먼저 ALSA에서 루프백 장치를 활성화해야 합니다. 이는 PulseAudio 볼륨 컨트롤에 입력 장치(및 출력 장치)로 표시됩니다.
sudo modprobe snd_aloop
그런 다음 이 장치를 mpd 서버에 추가할 수 있습니다.
mpc add alsa://hw:1,1
여기서 hw:1,1은 루프백 입력 장치이며 다음 명령으로 나열할 수 있습니다.aplay -l
그런 다음http 출력 플러그인mpd를 위해. 다음 예는 다음과 같습니다./etc/mpd.conf
audio_output {
type "httpd"
name "My HTTP Stream"
encoder "vorbis" # optional, vorbis or lame
port "8000"
bind_to_address "192.168.1.38" # optional, IPv4 or IPv6
quality "5.0" # do not define if bitrate is d$
# bitrate "128" # do not define if quality is d$
format "44100:16:1"
max_clients "0" # optional 0=no limit
}
그게 다야. 볼륨 조절 재생 탭에서 오디오 소스에 대한 루프백 장치를 선택하세요.
마지막으로 httpd URL 주소를 사용하여 대상 지점에서 VLC 또는 다른 스트림 렌더러를 사용할 수 있습니다.http://192.168.1.38:8000