Różnice w strumieniu PiCamera

Aug 31 2020

Próbuję utworzyć strumień h264 z mojego Pi 3 i wyświetlić go w aplikacji na Androida.

Po kilku próbach znalazłem dość proste rozwiązanie:

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

Działa dobrze i mogę odtwarzać za pomocą zwykłej aplikacji, takiej jak VLCw systemie Windows:

vlc tcp/h264://my_pi_address:5000/

Ten strumień można również wyświetlać w systemie Android za pomocą niestandardowej aplikacji ( RPi Camera Viewer).

Czytając dokumentację PiCamera , znalazłem inne rozwiązanie wykorzystujące Pythona, które powinno działać w ten sam sposób:

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()

Przetestowane przez VLCto działa dobrze, ale nie mogę wyświetlić tego strumienia na Androidzie. (A przynajmniej nie z RPi Camera Viewer).

Myślę, że jeden problem może pochodzić z niewielkimi różnicami pomiędzy strumieniem w strukturach więc jak mogę je porównać?

Odpowiedzi

1 weirdgyn Sep 01 2020 at 07:29

Problemy z wizualizacją aplikacji na Androida wynikały z wadliwego połączenia sieciowego.

Trudno jest szczegółowo określić, co się dzieje, ponieważ nie mogę dalej badać konfiguracji punktu dostępu i innych ustawień sieciowych (w tym zapór ogniowych) aktywnych w sieci firmowej, ponieważ nie mam uprawnień administratora sieci. To dość frustrujące. W rzeczywistości przy użyciu innego punktu dostępu wszystko działa zgodnie z oczekiwaniami.