mpd를 통해 시스템 오디오 스트리밍

mpd를 통해 시스템 오디오 스트리밍

나는 mpd를 사용하여 http.

그러나 이것은 내 mpd 데이터베이스에 있는 노래에만 작동합니다. 나는 종종 내 브라우저에서 콘텐츠를 재생하고 싶고 그 내용도 스트리밍되기를 원합니다 mpd.

스피커 대신 pulse audio출력을 라우팅하는 방법이 있습니까 ?mpd

답변1

mpd는 펄스 오디오 입력 소스를 허용하지 않으므로 펄스 오디오를 라우팅할 직접적인 방법이 없습니다.~을 통해mpd.

그러나 gstreamer의 도움과 약간의 영리함을 사용하면 달성하려는 작업이 여전히 가능합니다. 나는 몇 년 전에 이 일을 해냈습니다.

나는 썼다이 프로그램이 다이어그램의 "Gstreamer 파이프라인 스크립트" 구성 요소를 구현합니다.

스트림 다이어그램 http://tiyukquellmalz.org/sean/stream.svg

다이어그램을 요약하면 다음과 같습니다.

  • mpd는 디스크에서 음악 파일을 읽고, 디코딩한 다음, module-null-sinkpulseaudio 유형의 오디오 출력으로 "재생"합니다.
  • 컴퓨터에서 사운드를 출력하는 다른 프로그램(Adobe Flash, gnome Shell의 경고음, 웹 브라우저 등)도 해당 오디오 출력을 module-null-sinkpulseaudio로 보냅니다(시스템의 기본 오디오 장치로 설정됨). .
  • 출력 에는 소스가 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

관련 정보