[SOLVED] Raspberry Pi 3 e problemi di scrittura flussi streaming

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

[SOLVED] Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da Burroughs »

Ben ritrovati a tutti dopo tanto tempo.
Torno a scrivervi per sottoporvi un problema che, sinceramente, non riesco ad inquadrare.
Per circoscrivere la cosa, ecco lo stato dei fatti: mi sono trasferito da poco all'estero e sentendo nostalgia dei programmi tv di casa ho deciso di acquistare un'app sull'Apple Store che consente di vedere lo streaming in chiaro dei canali free italiani, ovviamente sotto una buona VPN.
Specifico che si tratta di canali in chiaro, quindi niente di illegale.
L'app in questione carica una lista di url, presente su pastebin, e ne consente la visualizzazione.
Avendo a casa una buona connessione Internet (fibra a 100 Mbps) e la mia fida Raspberry Pi 3 ho deciso di "costruirmi" un piccolo PVR per registrarmi le cose che più mi piacciono, specie quando sono fuori casa.
In verità lo script in questione non fa altro, sulla Raspberry, che invocare questo comando:

Codice: Seleziona tutto

/usr/bin/ffmpeg -async 26 -i "${URL}" -c:v libx264 -crf 0 -c:a copy /path_to_usb_drive/flux-$(date +"%d-%m-%y-%H-%M").ts
Ovviamente, prima di qualsiasi altra cosa, avvio la VPN.
Ora, la registrazione viene effettuata regolarmente (la directory di destinazione si trova su un banalissimo pennino USB), va tutto bene per 14-18 minuti, poi niente.
Mi spiego ancora meglio: la registrazione va avanti anche per un'ora, alla fine ottengo un file corposo, quindi il tutto sembrerebbe svolgersi senza problemi, ma alla fine il file risultante copre sempre e soltanto 14-18 minuti di visione.
Lanciando lo stesso comando sul mio Macbook tutto fila liscio.
Ho provato a cambiare la directory di destinazione della registrazione, stessa cosa.
Vi do in visione il mio /etc/fstab, magari il problema è lì:

Codice: Seleziona tutto

pi@glasgy:~ $ cat /etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p6  /boot           vfat    defaults          0       2
/dev/mmcblk0p7  /               ext4    defaults,noatime  0       1
UUID=8803a1d9 	/mnt/usb		ext4	defaults,auto,umask=000,users,rw,nofail 0 0
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that
Sinceramente trovo scomodo usare il laptop per un'operazione del genere e non vorrei comprare un Macbook Mini solo per questo, per cui sarebbe grande se riuscissi a fare il tutto sulla mia Raspberry.
Che ne dite?
Ultima modifica di Burroughs il gio 18 lug 2019, 12:03, modificato 1 volta in totale.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da rik70 »

Burroughs ha scritto:alla fine il file risultante copre sempre e soltanto 14-18 minuti di visione.
Cosa succede però quando lo riproduci: s'interrompe al minuto 14-18, oppure la riproduzione continua oltre e vedi... ...cosa?

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da Burroughs »

rik70 ha scritto:Cosa succede però quando lo riproduci: s'interrompe al minuto 14-18, oppure la riproduzione continua oltre e vedi... ...cosa?
Sì, si interrompe dopo 15-18 minuti, non c'è nessuno schermo nero, eppure il file risultante è abbastanza cospicuo.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da rik70 »

Uhm....
...non so, provo a buttarla lì:
- non è che l'hardware non "regge" il parametro '-crf 0' durante la codifica?
Immagino che lo usi per avere una qualità il più possibile senza perdita, ma mi sembra eccessivo. Prova ad aumentarlo - valori tra 15 e 18 dovrebbero essere sufficienti allo scopo.
- problemi di alimentazione? Ma lo escluderei, visto che dovresti vedere degli errori nel ring buffer del kernel.
- prova a incollare

Codice: Seleziona tutto

cat /proc/cmdline

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da rik70 »

rik70 ha scritto:cat /proc/cmdline
P.s.
In particolare, prova a controllare se vedi questa voce

Codice: Seleziona tutto

smsc95xx.turbo_mode=N
Io quel parametro di boot lo utilizzo sia sul PI2 che sulla versione 1B, perché avevo dei problemi di buffering su alcuni stream remoti.
Avevo letto che la modalità turbo_mode sul controller USB va a inficiare le prestazioni del contoller ethernet e credo sia attiva di default.
Disabilitandola, non perdi granché in prestazioni sulla parte USB dell'hw.

Non so dirti però se il discorso valga anche sul PI3, ma credo che l'hardware sia sostanzialmente identico alla versione 2.
Ultima modifica di rik70 il sab 22 giu 2019, 11:39, modificato 1 volta in totale.

Avatar utente
brg
Linux 3.x
Linux 3.x
Messaggi: 580
Iscritto il: sab 12 mar 2011, 14:20
Slackware: 15.0
Kernel: 5.15.117
Desktop: KDE5
Località: Montecatini
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da brg »

Prova a registrare in segmenti, invece che tutto in un solo stream: dovrebbe diminuire il consumo di risorse di sistema. Usando l'opzione "segment" puoi suddividere lo stream in tanti file di durata prefissata. Ho il dubbio che il problema in questo caso riguardi l'hardware e magari il consiglio di aumentare il crf, che leggo che ha un valore predefinito di 23, non è malvagia.

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da Burroughs »

Allora, ho cambiato il valore del crf ma è andata anche peggio, il file registrato visualizza solo 11 minuti anche se, da shell, il flusso va avanti e non si interrompe, cosa questa che, comunque, mi è sempre capitata.

Incollo la voce che mi avete richiesto, premettendo che smsc95xx.turbo_mode=N non l'ho trovata:

Codice: Seleziona tutto

pi@glasgy:~ $ cat /proc/cmdline
coherent_pool=1M 8250.nr_uarts=0 bcm2708_fb.fbwidth=640 bcm2708_fb.fbheight=480 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  dwc_otg.lpm_enable=0 console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait splash plymouth.ignore-serial-consoles
Non penso si tratti di un problema di alimentazione (il Raspberry lo alimento dalla corrente), anch'io propendo per una problematica hardware visto che, come vi scrivevo prima, sul Macbook Pro tutto fila liscio come l'olio.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da rik70 »

Prova a fare allora quanto suggerivo prima.

Verifica se l'hardware utilizza il driver smsc95xx:

Codice: Seleziona tutto

dmesg | grep smsc95xx
Nel caso, dovresti vedere qualcosa che riguarda sia l'usbcore che l'ethernet.

Se il test è positivo, allora aggiungi ai parametri di avvio l'argomento 'smsc95xx.turbo_mode=N' - senza gli apici.

Ravvia e riprova a catturare il flusso audio/video.

Altra ipotesi:
che sia un problema del formato '.ts'?
Provato a cambiare muxer - tipo .mp4, se il codec audio è compatibile - magari aggiungendo a ffmpeg l'argomento `-movflags faststart` ?

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da Burroughs »

rik70 ha scritto:Prova a fare allora quanto suggerivo prima.
[CUT]

Ho provato a cambiare il muxer, passandogli le nuove opzioni, ma è anche peggio: non si riesce a vedere nulla ed il file "copre" solo novanta secondi.
Questo è l'output relativo al driver.

Codice: Seleziona tutto

pi@glasgy:~ $ dmesg | grep smsc95xx
[    0.307403] usbcore: registered new interface driver smsc95xx
Più tardi provo a riavviare... ;-)
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da Burroughs »

Allora, prima di tutto, posto il listato delle opzioni di boot del Raspberry per essere certo di non aver commesso errori:

Codice: Seleziona tutto

pi@glasgy:~ $ cat /boot/cmdline.txt 
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait splash plymouth.ignore-serial-consoles smsc95xx.turbo_mode=N
Ho provato a ricatturare lo stream, stavolta sia andati vicini ai 14 minuti, nulla di più.
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
brg
Linux 3.x
Linux 3.x
Messaggi: 580
Iscritto il: sab 12 mar 2011, 14:20
Slackware: 15.0
Kernel: 5.15.117
Desktop: KDE5
Località: Montecatini
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da brg »

Hai provato a segmentare il file di registrazione con qualcosa del tipo "-f segment -segment_time 600"?

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da Burroughs »

brg ha scritto:Hai provato a segmentare il file di registrazione con qualcosa del tipo "-f segment -segment_time 600"?
Mi dà questo errore:

Codice: Seleziona tutto

[mpegts @ 0x3199bf0] Invalid segment filename template '/media/pi/RASPY/PVR/posto-22-06-19-18-13.ts'
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:0 -- 
Il comando che lancio adesso è:

Codice: Seleziona tutto

/usr/bin/ffmpeg -async 26 -i "${URL}" -c:v libx264 -crf 16 -f segment -segment_time 600 -c:a copy /media/pi/RASPY/PVR/posto-$(date +"%d-%m-%y-%H-%M").ts
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da Burroughs »

[UPDATE] Nel pomeriggio mi sono compilato mpv, sfruttando le indicazioni (molto al limite, invero) contenute qui ed è successo un mezzo miracolo.

Lanciando questo comando, infatti, sono riuscito a registrare per 28 minuti (poi ho interrotto io manualmente):

Codice: Seleziona tutto

mpv "${URL}" --record-file="/media/pi/RASPY/PVR/posto-$(date +"%d-%m-%y-%H-%M").ts
Il problema dovrebbe essere risolto ma, per tutta sicurezza, proverò domani con una registrazione lunga... :)
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da rik70 »

Questo è l'output relativo al driver.

Codice: Seleziona tutto

pi@glasgy:~ $ dmesg | grep smsc95xx
[    0.307403] usbcore: registered new interface driver smsc95xx[/quote]
Uhm... no, nel tuo caso il 'turbo_mode' non ha effetto. Evidentemente nel PI3 la parte ethernet è controllata da un driver diverso. Quindi il mio discorso non è valido.

Codice: Seleziona tutto

mpv "${URL}" --record-file="/media/pi/RASPY/PVR/posto-$(date +"%d-%m-%y-%H-%M").ts
In questo modo però fai il dump del flusso senza alcuna codifica.

Per replicare quello che stavi tentando con ffmpeg dovresti provare con:

Codice: Seleziona tutto

mpv "${URL}" -o /media/pi/RASPY/PVR/posto-$(date +%d-%m-%y-%H-%M).ts --ovc libx264 --oac aac

Avatar utente
Burroughs
Linux 4.x
Linux 4.x
Messaggi: 1076
Iscritto il: mer 15 dic 2004, 0:00
Nome Cognome: Andrea Lutri
Kernel: 3.16.0
Desktop: KDE SC 4.13.3
Distribuzione: Arch Linux
Località: Glasgow
Contatta:

Re: Raspberry Pi 3 e problemi di scrittura flussi streaming

Messaggio da Burroughs »

Grazie, rik, ho avviato la registrazione, conto di tenerla su un paio d'ore, così da testarla a fondo.
Non ho avuto modo di cercare ancora, ma a te risulta che a mpv sia passabile un'opzione tipo async di ffmpeg per risolvere eventuali problemi di audio fuori sincrono?
"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe" (Albert Einstein)

Rispondi