Differenze di flusso di PiCamera

Aug 31 2020

Sto cercando di creare uno stream h264 dal mio Pi 3 e visualizzarlo su un'applicazione Android.

Dopo diversi tentativi ho trovato una soluzione abbastanza semplice:

raspivid -n -ih -t 0 -w 640 -h 480 -fps 25 -b 2000000 -l -o - | nc -l -p 5000

Funziona bene e posso riprodurlo tramite un'app comune come VLCsu Windows:

vlc tcp/h264://my_pi_address:5000/

Questo flusso può essere visualizzato anche su Android utilizzando un'applicazione personalizzata ( RPi Camera Viewer).

Leggendo i documenti di PiCamera ho trovato un'altra soluzione utilizzando Python che dovrebbe agire allo stesso modo:

import socket
import time
import picamera

camera = picamera.PiCamera()
camera.resolution = (640, 480)
camera.framerate = 24

server_socket = socket.socket()
server_socket.bind(('0.0.0.0', 8000))
server_socket.listen(0)

# Accept a single connection and make a file-like object out of it
connection = server_socket.accept()[0].makefile('wb')
try:
    camera.start_recording(connection, format='h264')
    camera.wait_recording(60)
    camera.stop_recording()
finally:
    connection.close()
    server_socket.close()

Testato VLCfunziona bene ma non riesco a visualizzare questo flusso su Android. (Almeno non con RPi Camera Viewer).

Penso che un problema possa derivare da piccole differenze tra le strutture del flusso, quindi come posso confrontarle?

Risposte

1 weirdgyn Sep 01 2020 at 07:29

I problemi nella visualizzazione dell'app Android erano causati da una connessione di rete difettosa.

È piuttosto difficile dire cosa succede in dettaglio perché non posso indagare ulteriormente sulla configurazione del punto di accesso e altre impostazioni di rete (inclusi i firewall) attive sulla rete aziendale poiché non ho i privilegi di amministratore di rete, questo è piuttosto frustrante. È un dato di fatto utilizzando un diverso punto di accesso tutto funziona come previsto.