Pi에 raspbian을 설치하고 데스크톱에서 Pi로 모든 오디오를 스트리밍하여 스피커를 구동 할 수 있도록 PulseAudio 싱크를 구성했습니다.
나는이 멋진 설명을 따랐다 : http://www.raspberrypi.org/phpBB3/viewtopic.php?f=38&t=11124
처음에는 이것이 문제없이 작동하는 것처럼 보였습니다. 그러나 데스크톱에서 전송 된 오디오는 파이에서 계속 끊김 현상이 발생합니다. 중간에 샘플이 몇 개만 있으면 버퍼 언더런이 일정하게 유지되는 것처럼 보입니다.
나는 하루 종일 원인을 찾으려고 노력했지만 아무 소용이 없습니다. 기본 설정은 다음과 같습니다.
- 유선 LAN 연결
- 최신 펌웨어 업데이트가있는 최신 라즈 비안 파이 (2013 년 9 월 26 일)
- 양쪽의 PulseAudio 2.0 (Ubuntu 데스크탑)
- mplayer, 토템, ffplay를 통한 재생
- 모듈 네이티브 프로토콜 TCP를 통한 네트워크 전송
이것이 내가 시도한 것입니다.
- Pi에서 직접 오디오를 재생하면 완벽하게 작동합니다.
- 다른 (데스크톱) 컴퓨터로 스트리밍하면 정상적으로 작동합니다.
- 직접 연결로 오디오를 보내면 ($ PULSE_SERVER 지정) 아주 작은 소리로 잘 작동하지만 여전히 문제 2가 발생하기 쉽습니다 (아래 참조).
- 데스크탑을 통해 오디오 보내기 PulseAudio 터널링은 끊김없는 끊김 현상을 제공합니다
- 우선 순위 증가 / 실시간 예약 ... 도움이되지 않았습니다
- 샘플링 속도를 48 kHz로 고정 ... 도움이되지 않았습니다
- 리샘플링 알고리즘을 "사소한"것으로 설정하는 것이 도움이되지 않았습니다.
- 기본 조각 / 조각 크기 조정 ... 도움이되지 않았습니다
PulseAudio 로그에서 문제의 표시를 찾을 수 없습니다 (재생을 시작한 시점부터 표시됨).
D: [alsa-sink] protocol-native.c: Requesting rewind due to end of underrun. D: [alsa-sink] sink-input.c: Requesting rewind due to uncorking D: [pulseaudio] sink.c: Suspend cause of sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo is 0x0000, resuming I: [alsa-sink] alsa-sink.c: Trying resume... I: [alsa-sink] alsa-util.c: cannot disable ALSA period wakeups D: [alsa-sink] alsa-util.c: Maximum hw buffer size is 341 ms D: [alsa-sink] alsa-util.c: Set buffer size first (to 16384 samples), period size second (to 16384 samples). I: [alsa-sink] alsa-util.c: ALSA period wakeups were not disabled D: [alsa-sink] alsa-sink.c: Latency set to 25.00ms D: [alsa-sink] alsa-sink.c: hwbuf_unused=60736 D: [alsa-sink] alsa-sink.c: setting avail_min=15665 I: [alsa-sink] alsa-sink.c: Time scheduling watermark is 15.00ms I: [alsa-sink] alsa-sink.c: Resumed successfully... I: [alsa-sink] alsa-sink.c: Starting playback. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes busy. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] alsa-sink.c: Cutting sleep time for the initial iterations by half. D: [alsa-sink] ratelimit.c: 115 events suppressed D: [alsa-sink] alsa-sink.c: Wakeup from ALSA! ... no more output, but stuttering continues ...
문제 2 : 위에서 말했듯이 직접 연결하면 꽤 괜찮은 오디오를 얻을 수 있습니다. 그러나 스트림 내에서 몇 번 건너 뛰면 (mplayer 사용) PulseAudio 서버가 중단되고 오디오가 전혀 재생되지 않습니다. 때로는 mplayer를 다시 시작하여 복구 할 수 있습니다. 때때로 그것은 너무 심하게 중단되어 PulseAudio를 다시 시작해야합니다. 볼륨 레벨 만 변경할 때도 멈추는 경우가 있습니다.
PulseAudio 문서에 따르면 터널링 연결을 통한 직접 연결의 이점은 버퍼링 제어 기능이 향상되어 직접 연결을 통해 좋은 오디오를 얻는 이유를 나타내는 것입니다. http://www.freedesktop.org/wiki/Software / PulseAudio / 문서 / 사용자 / 네트워크 /
나는 지금 아이디어가 없다. 말더듬과 문제 2의 원인은 무엇입니까? 디버깅을 진행하는 방법에 대한 아이디어도 높이 평가할 것입니다.