2016-03-29 13 views
0

Ich versuche, Audio mit niedriger Latenz zwischen 2 Himbeerpis zu streamen. Sowohl gstreamer als auch ffmpeg führen zu 2+ zweiten Verzögerungen für mich.JACK Audio/Netjack funktioniert nicht über LAN

Ich habe mit Jack Audio rumgespielt und lokal auf einem einzigen Pi scheint es vielversprechend. Ich kann den Mikrofoneingang lokal auf einen Lautsprecher routen und das ist fast augenblicklich.

Allerdings hatte ich Probleme, es mit Netjack zwischen Geräten zu routen.

# ON SERVER 
jackd -P70 -p16 -t2000 -dalsa -dhw:1 -p128 -n3 -r44100 -s 

# ON CLIENT 
jackd -v -R -P70 -dnetone -i1 -o1 -I0 -O0 -r44100 -p128 -n3 

# ON SERVER 
jack_netsource -H < ip address of client > 
jack_lsp # list availible connection ports 

>system:capture_1 
>system:playback_1 
>system:playback_2 
>netjack:capture_1 
>netjack:capture_2 
>netjack:capture_3 
>netjack:playback_1 
>netjack:playback_2 
>netjack:playback_3 

jack_connect system:capture_1 system:playback_1 # this works 
jack_connect system:capture_1 netjack:playback_1 # this doesn't work :(

Die meisten der Startoptionen ich von hier http://wiki.linuxaudio.org/wiki/raspberrypi#using_jack gezogen. Ich werde ehrlich sein, ich weiß nicht wirklich was sie tun.

Der Client jackd Ausgabe zeigt Meldungen wie

Jack: data not valid 
Jack: data not valid 
Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 6 
Jack: JackRequest::Notification 
Jack: JackEngine::ClientNotify: no callback for notification = 3 
Jack: JackEngine::ClientNotify: no callback for notification = 3 
netxruns... duration: 139ms 
Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 6 
Jack: JackRequest::Notification 
Jack: JackEngine::ClientNotify: no callback for notification = 3 
Jack: JackEngine::ClientNotify: no callback for notification = 3 

und der Server jack_netsource Ausgabe sieht wie folgt

current latency 114 
current latency 20 
current latency 27 
current latency 29 
current latency 48 
current latency 23 
current latency 33 
current latency 28 
current latency 41 
current latency 84 
current latency 44 

und der Server jackd Ausgabe sieht wie folgt

JackAudioDriver::ProcessGraphAsyncMaster: Process error 
JackAudioDriver::ProcessGraphAsyncMaster: Process error 
JackAudioDriver::ProcessGraphAsyncMaster: Process error 
JackAudioDriver::ProcessGraphAsyncMaster: Process error 
JackEngine::XRun: client = netjack was not finished, state = Triggered 
JackAudioDriver::ProcessGraphAsyncMaster: Process error 
JackAudioDriver::ProcessGraphAsyncMaster: Process error 
JackEngine::XRun: client = netjack was not finished, state = Triggered 
JackEngine::XRun: client = netjack was not finished, state = Triggered 

ich die -dnetone glauben Flag zeigt an, Netjack2 zu verwenden. NetJACK 1, die ich mit den -dnet Flagge Ergebnisse in einer einzigen Not Connected Nachricht von jack_netsource und versucht haben:

Jack: CatchHost fd = 5 err = Resource temporarily unavailable 
Jack: CatchHost fd = 5 err = Resource temporarily unavailable 
Jack: CatchHost fd = 5 err = Resource temporarily unavailable 
Jack: CatchHost fd = 5 err = Resource temporarily unavailable 
Jack: CatchHost fd = 5 err = Resource temporarily unavailable 
Jack: JackSocketServerChannel::Execute : fPollTable i = 1 fd = 6 

vom Client jackd.

+0

Haben Sie das jemals funktioniert? Ich möchte diese Lösung für Fern-Online-Proben ausprobieren. – cayblood

+0

Ich denke, Jack ist sehr empfindlich auf Netzwerklatenz. Ich denke nicht, dass Jack für Remote- oder Wireless-Setups funktioniert – James

Antwort

0

Zuerst auf dem Raspberry Pi, stellen Sie sicher, dass Sie mmap aktiviert haben (check here).

Sobald jackd Setup richtig ist, dann ist dies die grundlegende Methode zur jackd2 zwischen Master und Slave angeschlossen zu erhalten:

Auf dem Master ... jackd -d alsa jack_load NetManagers Auf dem Slave ... jackd -r -d net -a ipadresse

Sollte an dieser Stelle arbeiten, vergessen Sie nicht, Anschlüsse vom Netjack an System-Eingang und Ausgang am Master anzuschließen. Sie könnten den JackPortMonitor oder JackPortMonitorGui verwenden, um diese automatisch auf dem Master für Sie zu verbinden. In diesem Fall sieht das Master-Startup so aus: jackd -d alsa jack_load netmanager JackPortMonitorGui