Open stefanospadari opened 5 months ago
sudo apt-get update sudo apt-get install gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
comandi per avviare una connessione da terminale
server:
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! rtph264pay pt=96 ! udpsink host=127.0.0.1 port=5000
client:
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false
Abbiamo deciso di effettuare un resize per mandare un frame per pacchetto udp. due opzioni: RGB: 125x165. YUV: 205x155 (200x150)
Server riceve frame dalla fotocamera, converte in YUV e fa resize a 205-155.
Client effettua la conversione dei colori in RGB e poi estende la dimensione della foto a 640x480 (resize).
@fmunibo ti odio
tieni il codice senza utilizzo di moduli esterni
# Ottieni i dati del frame come bytes
frame_data = yuv_frame.tobytes()
# Ottieni la dimensione dei dati
frame_size = len(frame_data)
# Inserisci la dimensione dei dati nei primi 4 byte del pacchetto
packet = frame_size.to_bytes(4, byteorder='big') + frame_data
# Invia il pacchetto sulla socket
udp_socket.sendto(packet, server_address)
yuv_frame = np.frombuffer(frame_data, dtype=np.uint8).reshape((yuv_height, yuv_width))
Ho aperto questa issue per curare la parte di connessione client server. L'idea è quella di avere un server (la fpga) che abbia una socket sulla quale resta in ascolto per le richieste di connessione. Il server ha indirizzo fisso e statico, alla quale deve riferirsi il Client e quando si accende deve effettuare la richiesta di connessione.
Una volta instaurata la connessione il server manderà stream video solo quando "rileverà movimenti". Potremmo partire da un esempio in cui mandiamo frame continuamente e poi provare a limitare l'invio solo quando abbiamo la rilevazione movimenti.