我在Pi上安装了raspbian并配置了PulseAudio接收器,目的是将所有音频从台式机流式传输到Pi,从而驱动扬声器。
我遵循了这个很好的描述:http : //www.raspberrypi.org/phpBB3/viewtopic.php?f= 38&t= 11124
最初,这似乎没有问题。但是,从台式机发送的音频在Pi上始终不停地发出声音,好像缓冲区持续欠载,中间只有几个采样丢失。
我整天都在努力寻找原因,但无济于事。基本设置是:
- 有线局域网连接
- 最新的树莓派(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?只是一个想法如何进行调试也将不胜感激。