Pi als Empfänger für RTP


12 posts
by woof » Mon Oct 29, 2012 3:40 pm
Hallo Leute,

ich bin erst seit kurzem Linux User und suche ein wenig Unterstützung: Ich möchte meinen Pi dazu bringen einen RTP Audio-Stream einer MultiCast Gruppe wiederzugeben. Nach meinen Recherchen hab ich PulseAudio mit <module-rtp-recv> für diese Aufgabe auserkoren (installiert und up2date). Der PulseAudio Server läuft, eine lokale Wiedergabe ist mit aplay und mit paplay --passthrough möglich (z.B. wav).
Nun hab ich aber der Doku nicht entnehmen können wie ich PulseAudio konfiguriere. Der RTP Stream hat das Format 16Bit/16kHz/mono und wird über die MultiCast Gruppe 239.255.0.20 ausgesendet. Muss ich mich nicht irgenwie an die MultiCast Gruppe anmelden (join)?

Vielen Dank für jede Unterstützung
Wolfgang
Posts: 1
Joined: Mon Oct 29, 2012 9:31 am
by davorin » Fri Nov 02, 2012 5:56 pm
Da werden Erinnerungen wach (o;

Linux sollte automatisch ein IGMP Join senden an die Gruppe...da sollte nichts zusätzlich nötig sein...

Für das Senden von Multicast musste der Kernel dazu neu kompiliert werden (Linux 2.x). Ob das bei 3.x auch noch so ist, weiss ich nicht...

Ich habe damals einen einfachen RTP Receiver Source Code genommen udn den modifiziert, um mit einem damals 16MHz getakteten uCsimm Moudl MP3 Multicast Streams zu empfangen:

Hier ein Archiv meiner damaligen Seite:

http://web.archive.org/web/20010302124313/http://www.uclinux.net/
Posts: 167
Joined: Tue Sep 11, 2012 2:07 pm
Location: Switzerland
by davorin » Fri Nov 02, 2012 5:59 pm
Ah die Sourcen gibt es immer noch:

http://www.fefe.de/rtp/

Ich habe lange eine Ersatzlösung gesucht zu dem damaligen Obsequiem MP3 Multicast Server, aber nie was Gescheites gefunden. Werde mal Deine Lösung anschauen.

Ach das waren noch Zeiten vor 12 Jahren, als ich MPEG2 Multicast Streams quer durch Europa gesendet habe ;-)
Posts: 167
Joined: Tue Sep 11, 2012 2:07 pm
Location: Switzerland
by ianmacs » Mon Nov 05, 2012 12:45 am
Pulseaudio auf dem Pi als RTP-zu-Lautsprecher Wandler ist genau was ich seit zwei Tagen versuche und nicht hinbekomme.

RTP-Sender ist ein Linux-Laptop. Über paprefs habe ich eine RTP-Senke eingestellt und über pavucontrol habe ich die Soundausgabe von Mplayer dieser Senke zugewiesen.

Mit tcpdump kann ich auf dem pi die Multicast-Pakete sehen.

Pulseaudio auf dem Pi habe ich sowohl im System-Modus als auch im Session-Modus ausprobiert. Funktioniert auch jeweils, allerdings wird der RTP-Stream nicht empfangen und abgespielt. Im System-Modus habe ich

load-module module-rtp-recv

an /etc/pulse/system.pa angefügt, im Session-Modus habe ich über paprefs die entsprechende Einstellung vorgenommen.

Freigabe der Pi-Pulseaudio-Instanz im Netwerk (über TCP) funktioniert dagegen, allerdings gibt es dann deutliche Zeitunterschiede zwischen zwei rendernden Pis im Bereich bis 1sec, so dass ich stattdessen gerne RTP ausprobieren würde.
Posts: 30
Joined: Mon Jul 09, 2012 10:42 am
by ianmacs » Sun Nov 11, 2012 9:57 am
load-module module-rtp-recv sollte eigentlich reichen, um einen RTP-Stream zu empfangen und abzuspielen.

Code: Select all
netstat -uln

zeigt dann, dass auf dem Raspberry Empfänger zunächst am UDP-Port 224.0.0.56:9875 gehorcht wird und, wenn ein RTP-Sender im Netz ist, auch an einem höheren Port für diesen Sender.

Setze ich pulseaudio log-level auf debug, sehe ich im syslog beim laden des Moduls während bereits ein RTP-Stream läuft

Code: Select all
Nov 11 01:14:12 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Created 8 "UNIX socket client"
Nov 11 01:14:12 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client added for object /org/pulseaudio/core1/client8
Nov 11 01:14:12 raspberrypi2 pulseaudio[2227]: [pulseaudio] module.c: Loaded "module-rtp-recv" (index: #24; argument: "").
Nov 11 01:14:12 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Module added for object /org/pulseaudio/core1/module24
Nov 11 01:14:12 raspberrypi2 pulseaudio[2227]: [pulseaudio] cli.c: CLI got EOF from user.
Nov 11 01:14:12 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Freed 8 "UNIX socket client"
Nov 11 01:14:12 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client removed from object /org/pulseaudio/core1/client8
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-stream-restore.c: Not restoring device for stream sink-input-by-media-role:stream, because already set to 'alsa_output.platform-bcm2835_AUD0.0.analog-stereo'.
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-intended-roles.c: Not setting device for stream RTP Stream (PulseAudio RTP Stream on rtp-sender-host), because already set.
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink.c: Suspend cause of sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo is 0x0000, resuming
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] reserve-wrap.c: Unable to contact D-Bus session bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Trying resume...
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-util.c: Maximum hw buffer size is 185 ms
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-util.c: Set buffer size first (to 4408 samples), period size second (to 1104 samples).
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: hwbuf_unused=0
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: setting avail_min=1
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Resumed successfully...
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes idle, timeout in 5 seconds.
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Starting playback.
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] (alsa-lib)pcm_hw.c: SNDRV_PCM_IOCTL_START failed (-77)
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes busy.
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] resampler.c: Using resampler 'speex-float-3'
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] resampler.c: Using float32le as working format.
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] resampler.c: Choosing speex quality setting 3.
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] memblockq.c: memblockq requested: maxlength=33554432, tlength=0, base=4, prebuf=0, minreq=1 maxrewind=0
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=33554432, tlength=33554432, base=4, prebuf=0, minreq=4 maxrewind=0
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink-input.c: Created input 1 "RTP Stream (PulseAudio RTP Stream on rtp-sender-host)" on alsa_output.platform-bcm2835_AUD0.0.analog-stereo with sample spec s16be 2ch 44100Hz and channel map front-left,front-right
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink-input.c:     media.role = "stream"
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink-input.c:     media.name = "RTP Stream (PulseAudio RTP Stream on rtp-sender-host)"
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink-input.c:     rtp.session = "PulseAudio RTP Stream on rtp-sender-host"
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink-input.c:     rtp.origin = "rtp-sender-user 3561581535 0 IN IP4 192.168.123.45"
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink-input.c:     rtp.payload = "10"
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink-input.c:     module-stream-restore.id = "sink-input-by-media-role:stream"
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] memblockq.c: memblockq requested: maxlength=41943040, tlength=41943040, base=4, prebuf=70568, minreq=0 maxrewind=0
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] memblockq.c: memblockq sanitized: maxlength=41943040, tlength=41943040, base=4, prebuf=70568, minreq=4 maxrewind=0
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Requested volume: 0:  92% 1:  92%
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c:            in dB: 0: -2,30 dB 1: -2,30 dB
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Got hardware volume: 0:  92% 1:  92%
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c:               in dB: 0: -2,30 dB 1: -2,30 dB
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Calculated software volume: 0: 100% 1: 100% (accurate-enough=yes)
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c:                      in dB: 0: 0,00 dB 1: 0,00 dB
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [alsa-sink] sink.c: Volume not changing
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] core-subscribe.c: Dropped redundant event due to change event.
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-rtp-recv.c: New session 'PulseAudio RTP Stream on rtp-sender-host'
Nov 11 01:14:15 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Stream added for object /org/pulseaudio/core1/playback_stream1
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Requesting rewind due to end of underrun
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Requested to rewind 17632 bytes.
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Limited to 17376 bytes.
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: before: 4344
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: after: 3964
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Rewound 15856 bytes.
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] sink.c: Processing rewind...
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] sink.c: latency = 59124
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] sink-input.c: Have to rewind 15856 bytes on render memblockq.
Nov 11 01:14:16 raspberrypi2 pulseaudio[2227]: [alsa-sink] source.c: Processing rewind...
Nov 11 01:14:20 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updating sample rate
Nov 11 01:14:20 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: wi=5006802 ri=4694784
Nov 11 01:14:20 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Write index deviates by 408,36 ms, expected 500,00 ms
Nov 11 01:14:20 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Estimated target rate: 43306 Hz, using average of 44084 Hz  (α=0,020)
Nov 11 01:14:20 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: New rate of 43882 Hz not within 2‰ of 44100 Hz, forcing smaller adjustment
Nov 11 01:14:20 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updated sampling rate to 44011 Hz.
Nov 11 01:14:25 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updating sample rate
Nov 11 01:14:25 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: wi=10026584 ri=9713935
Nov 11 01:14:25 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Write index deviates by 405,01 ms, expected 500,00 ms
Nov 11 01:14:25 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Estimated target rate: 43982 Hz, using average of 44002 Hz  (α=0,800)
Nov 11 01:14:25 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: New rate of 43793 Hz not within 2‰ of 44011 Hz, forcing smaller adjustment
Nov 11 01:14:25 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updated sampling rate to 43922 Hz.
Nov 11 01:14:26 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Created 9 "UNIX socket client"
Nov 11 01:14:26 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client added for object /org/pulseaudio/core1/client9
Nov 11 01:14:26 raspberrypi2 pulseaudio[2227]: [pulseaudio] cli.c: CLI got EOF from user.
Nov 11 01:14:26 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Freed 9 "UNIX socket client"
Nov 11 01:14:26 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client removed from object /org/pulseaudio/core1/client9
Nov 11 01:14:30 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updating sample rate
Nov 11 01:14:30 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: wi=15073994 ri=14731569
Nov 11 01:14:30 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Write index deviates by 432,83 ms, expected 500,00 ms
Nov 11 01:14:30 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Estimated target rate: 44168 Hz, using average of 44005 Hz  (α=0,020)
Nov 11 01:14:30 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updated sampling rate to 43857 Hz.
Nov 11 01:14:32 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-rtp-recv.c: Checking for dead streams ...
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Created 10 "UNIX socket client"
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client added for object /org/pulseaudio/core1/client10
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [pulseaudio] cli.c: CLI got EOF from user.
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Freed 10 "UNIX socket client"
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client removed from object /org/pulseaudio/core1/client10
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updating sample rate
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: wi=20130879 ri=19751464
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Write index deviates by 471,94 ms, expected 500,00 ms
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Estimated target rate: 44203 Hz, using average of 44163 Hz  (α=0,800)
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: New rate of 44100 Hz not within 2‰ of 43857 Hz, forcing smaller adjustment
Nov 11 01:14:35 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updated sampling rate to 43944 Hz.
Nov 11 01:14:40 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updating sample rate
Nov 11 01:14:40 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: wi=25108319 ri=24715091
Nov 11 01:14:40 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Write index deviates by 484,07 ms, expected 500,00 ms
Nov 11 01:14:40 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Estimated target rate: 44051 Hz, using average of 44161 Hz  (α=0,020)
Nov 11 01:14:40 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: New rate of 44125 Hz not within 2‰ of 43944 Hz, forcing smaller adjustment
Nov 11 01:14:40 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updated sampling rate to 44031 Hz.
Nov 11 01:14:45 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updating sample rate
Nov 11 01:14:45 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: wi=30095160 ri=29666371
Nov 11 01:14:45 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Write index deviates by 520,03 ms, expected 500,00 ms
Nov 11 01:14:45 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Estimated target rate: 44350 Hz, using average of 44165 Hz  (α=0,020)
Nov 11 01:14:45 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: New rate of 44209 Hz not within 2‰ of 44031 Hz, forcing smaller adjustment
Nov 11 01:14:45 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updated sampling rate to 44119 Hz.
Nov 11 01:14:46 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Created 11 "UNIX socket client"
Nov 11 01:14:46 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client added for object /org/pulseaudio/core1/client11
Nov 11 01:14:46 raspberrypi2 pulseaudio[2227]: [pulseaudio] cli.c: CLI got EOF from user.
Nov 11 01:14:46 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Freed 11 "UNIX socket client"
Nov 11 01:14:46 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client removed from object /org/pulseaudio/core1/client11
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updating sample rate
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: wi=35032525 ri=34619098
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Write index deviates by 511,46 ms, expected 500,00 ms
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Estimated target rate: 44044 Hz, using average of 44124 Hz  (α=0,335)
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] module-rtp-recv.c: Updated sampling rate to 44149 Hz.
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Created 12 "UNIX socket client"
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client added for object /org/pulseaudio/core1/client12
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] module.c: Unloading "module-rtp-recv" (index: #24).
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-rtp-recv.c: Freeing session 'PulseAudio RTP Stream on rtp-sender-host'
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Requested volume: 0:  92% 1:  92%
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c:            in dB: 0: -2,30 dB 1: -2,30 dB
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Got hardware volume: 0:  92% 1:  92%
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c:               in dB: 0: -2,30 dB 1: -2,30 dB
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Calculated software volume: 0: 100% 1: 100% (accurate-enough=yes)
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c:                      in dB: 0: 0,00 dB 1: 0,00 dB
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] sink.c: Volume not changing
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes idle, timeout in 5 seconds.
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Requested to rewind 17632 bytes.
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Limited to 15616 bytes.
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: before: 3904
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: after: 3904
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Rewound 15616 bytes.
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] sink.c: Processing rewind...
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] sink.c: latency = 0
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [alsa-sink] source.c: Processing rewind...
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo becomes idle, timeout in 5 seconds.
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] module.c: Unloaded "module-rtp-recv" (index: #24).
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Stream removed from object /org/pulseaudio/core1/playback_stream1
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink-input.c: Freeing input 1 "RTP Stream (PulseAudio RTP Stream on rtp-sender-host)"
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Module removed from object /org/pulseaudio/core1/module24
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] cli.c: CLI got EOF from user.
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] client.c: Freed 12 "UNIX socket client"
Nov 11 01:14:50 raspberrypi2 pulseaudio[2227]: [pulseaudio] protocol-dbus.c: Interface org.PulseAudio.Core1.Client removed from object /org/pulseaudio/core1/client12
Nov 11 01:14:55 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-suspend-on-idle.c: Sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo idle for too long, suspending ...
Nov 11 01:14:55 raspberrypi2 pulseaudio[2227]: [pulseaudio] sink.c: Suspend cause of sink alsa_output.platform-bcm2835_AUD0.0.analog-stereo is 0x0004, suspending
Nov 11 01:14:56 raspberrypi2 pulseaudio[2227]: [alsa-sink] alsa-sink.c: Device suspended...
Nov 11 01:14:56 raspberrypi2 pulseaudio[2227]: [pulseaudio] core.c: Hmm, no streams around, trying to vacuum.
Nov 11 01:14:56 raspberrypi2 pulseaudio[2227]: [pulseaudio] module-udev-detect.c: /dev/snd/controlC0 is accessible: yes


Verdächtig finde ich, dass die Abtastrate so ungenau getroffen wird, und die Warnungen der Art "Write index deviates by 484,07 ms, expected 500,00 ms". Zu hören ist nichts.
Posts: 30
Joined: Mon Jul 09, 2012 10:42 am
by hwintjen » Mon Nov 19, 2012 7:13 am
@ianmax: Ja, das sieht so aus wie das was ich auch bei mir gesehen habe.

Pulseaudio emptängt was, die CPU-Last geht hoch, aber zu hören ist nix.
Allerdings kam im syslog die Meldung, das der benutzte ALSA-Treiber wohl buggy wäre.

Vielleicht liegt es ja daran...
Posts: 5
Joined: Thu Jul 05, 2012 5:55 am
by ianmacs » Sun Dec 02, 2012 4:38 pm
Die Abtastfrequenz wird auf dem RTP empfangendem Raspberry Pi ungenau geschätzt. Hier http://fruit.je/mpd-rtp beschreibt jemand etwas ähnliches:
"Unfortunately the rate estimation code in the default PulseAudio has been broken for a long time.
I maintain a patch for it in my PulseAudio git repository"
Posts: 30
Joined: Mon Jul 09, 2012 10:42 am
by ianmacs » Tue Dec 04, 2012 7:20 am
Auch mit dem genannten Patch kommt kein Sound aus dem Raspberry Pi.
Posts: 30
Joined: Mon Jul 09, 2012 10:42 am
by christiank2510 » Sun Dec 09, 2012 12:20 pm
Versuche ebenfalls meinen Raspberry Pi als RTP Empfänger einzurichten. Bei mir hakt es an der gleichen Stelle.
Der Stream scheint zu laufen (laut pulseaudio Konsolen-Ausgabe) aber es kommt kein Ton.

Ein Audio-Test mit paplay funktioniert ohne Probleme, mit aplay ebenfalls.

Etwas stutzig macht mich folgende Meldung von PulseAudio:
E: [alsa-sink] alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write!
E: [alsa-sink] alsa-sink.c: Most likely this is a bug in the ALSA driver 'snd_bcm2835'. Please report this issue to the ALSA developers.
E: [alsa-sink] alsa-sink.c: We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail() returned 0 or another value < min_avail.

Ebenfalls probiert habe ich die Ausgabe Einstellungen zu ändern, mit:
amixer cset numid=3 1

Falls jemand noch weitere Infos geben könnte wäre ich dankbar.

Christian

uname -a
Linux raspberry1 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux
Raspbian Wheezy
Vor kurzem frisch aufgesetzt, alle Updates mit aptitude eingespielt Stand heute.
Posts: 3
Joined: Sun Dec 09, 2012 12:13 pm
by christiank2510 » Sun Dec 09, 2012 4:57 pm
Nach weiteren Untersuchungen vermute ich, dass die Probleme mit den Sample-Rates bzw. der Sample-Rate Konvertierung zu tun haben.

Auf meinem System kann ich mit paplay eine 48000 Hz Datei erfolgreich abspielen, eine andere Datei mit 22050 Hz funktioniert nicht.
aplay spielt beide Dateien ab.

Das RTP Modul in PulseAudio wird sicherlich auch keine 48000Hz liefern, sondern vermutlich sogar schwankende Sample-Raten.

Diskussionen an anderer Stelle gehen auch in die Richtung, dass es mit den Sample-Raten in der Vergangenheit Probleme gab:
viewtopic.php?f=66&t=7107&start=75
https://github.com/raspberrypi/firmware/issues/62
Posts: 3
Joined: Sun Dec 09, 2012 12:13 pm
by christiank2510 » Sun Dec 09, 2012 5:15 pm
Ok also wenn man die Pulseaudio resample Methode umstellt geht's, d.h. es kommt zumindest ein Ton.
Default ist speex-float-3 mit trivial kommt ein ton wenn auch in (sehr) schlechter Qualität.

Die Methode lässt sich z.B. in der Datei /etc/pulse/daemon.conf umstellen mit der Zeile:
resample-method = trivial

Weitere Infos unter:
http://linux.die.net/man/5/pulse-daemon.conf
oder auch http://linux.die.net/man/1/pulseaudio
Posts: 3
Joined: Sun Dec 09, 2012 12:13 pm
by ianmacs » Wed Dec 12, 2012 12:21 am
Ok also wenn man die Pulseaudio resample Methode umstellt geht's, d.h. es kommt zumindest ein Ton.


Danke! Auch andere resample-Methoden funktionieren, so z.B. speex-fixed-3 oder src-sinc-fastest.

CPU-Auslastung durch pulseaudio mit trivial: 10%; speex-fixed-3: 20%; src-sinc-fastest: 27%

Ich höre mit trivial und src-sinc-fastest keine Artefakte, mit speex-fixed-3 höre ich bei einem meiner pis ein Knistern.

Ich habe die Uhren auf dem sendenden Rechner und auf den Pis mit ntpdate mit der Fritzbox abgeglichen und danach ntpd (mit nur der Fritzbox in ntp.conf) auf allen Rechnern gestartet.

Wenn ich jetzt pulseaudio starte
Code: Select all
pulseaudio --log-target=syslog --log-level=debug --resample-method=src-sinc-fastest --start --realtime
pacmd load-module module-rtp-recv

höre ich zwischen zwei rendernden pis im selben Zimmer zwar lustige Raumeffekte, aber keine wahrnehmbaren Echos. Habe mehrmals probiert, ob ich durch Pulseaudio-Beenden-und-neu-Starten ein wahrnehmbares Echo bekomme, aber es sind höchstens jedesmal andere Räumliche Effekte.

Vorher, als ich noch nicht per lokalem ntp-Server synchronisiert hatte, gab es gut wahrnehmbar 1/4 bis 1/3 Sekunde Differenz zwischen den beiden pis.

Etwas Sorge macht mir noch die Varianz in der Abtastratenschätzung auf den Pis. Ich denke, ich sollte das als "Vibrato" hören, wenn der Resampler wirklich immer versucht, das auszugleichen, aber ich höre es nicht.

So ist es gut genug für mich. Ein Pi für jedes Zimmer kann jetzt bestellt werden.
Posts: 30
Joined: Mon Jul 09, 2012 10:42 am