@Schrolli,
das wird so nix.
Ich denke mal Python kommt da mit dem Timing nicht nach.
Habe da schon einiges an Lehrstunden ;-) investiert.
Bei mir funktioniert das so, fast perfekt:
Ich nutze dafür das snd_aloop Device.
Sollte unter Raspian verfügbar sein.
Auf meinem Banana Pi habe ich mir selbst einen Kernel mit aloop gebaut.
1. Mache mal ein "modprobe snd-aloop" und schaue mal mit "aplay -l" ob Du ein Loopback Device hast.
2. Erstelle Dir folgende .asoundrc (bei mir liegt die unter /root/)
3. Jetzt kannst Du hiermit das Signal einspeisen:Code:pcm.dsnooped { type dsnoop ipc_key 2048 ipc_perm 0666 slave { pcm "hw:Loopback,1" channels 1 rate 22050 } }
Und hiermit in den multimon-ng wieder einspeisen:Code:rtl_fm = subprocess.Popen("sudo rtl_fm -d "+str(deviceid)+" -f "+str(frequenz)+"M -M fm -s 22050 -l " + str(squelch) + " -p "+str(ppmerror)+" \ -E DC -F 0 -g 50 | AUDIODEV=plughw:Loopback,0 play -t raw -r 22050 -e signed-integer -b 16 -c1 -V1 -q -", stdout=subprocess.PIPE, stderr=open(LogString_rtl_fm,'a'), shell=True)
Einen Record mache ich hiermit:Code:multimon_ng = subprocess.Popen("sudo arecord_multimonng" +str(deviceid)+ " -r 22050 -D plug:dsnooped -c 1 -f S16_LE -t wav | \ multimon-ng" +str(deviceid)+ " "+str(demod1)+" "+str(demod2)+" "+str(demod3)+" -f alpha -t raw -", stdout=subprocess.PIPE, stderr=open(LogString_multimonng,'a'), shell=True)
Das funktioniert so eigentlich ganz gut. Nur nach ca. 12-24 Stunden,Code:record = subprocess.Popen("sudo arecord_memo" +str(deviceid)+ " -D plug:dsnooped -f S16_LE -r 22050 -c 1 -d " + str(zvei_RecTime) + " -t raw | lame --scale 10 -s 22050 -r -m mono -b 16 --cbr --resample 48k --lowpass 4 --tt '" + ID3 + "' - " + zvei_RecPath + memolink_zvei, stdout=subprocess.PIPE, stderr=open(LogString_memo,'a'), shell=True)
hängt sich der rtl_fm weg. In den Logfiles steht aber kein Fehler.
Eventuell läuft da irgend ein Buffer voll.
Ich habe mir hierfür ein Python WatchDog Script geschrieben.
Damit werden alle Dienste dann durch gestartet.
Momentan experimentiere ich mit dem "tee" Befehl.
Damit starte ich alles vom Bash und splitte den Stream zum
multimon-ng (hier wird ein Python-Filter-Script mit aufgerufen)
und in das snd-aloop Device.
Das läuft so jetzt schon 3 Tage durch !!!!
Gruß
Marcel




Zitieren