Différences de flux PiCamera
J'essaie de créer un flux h264 à partir de mon Pi 3 et de l'afficher sur une application Android.
Après plusieurs tentatives, j'ai trouvé une solution assez simple:
raspivid -n -ih -t 0 -w 640 -h 480 -fps 25 -b 2000000 -l -o - | nc -l -p 5000
Cela fonctionne bien et je peux y jouer via une application commune comme VLCWindows:
vlc tcp/h264://my_pi_address:5000/
Ce flux peut également être consulté sur Android à l'aide d'une application personnalisée ( RPi Camera Viewer).
En lisant la documentation PiCamera, j'ai trouvé une autre solution utilisant Python qui devrait agir de la même manière:
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()
Testé, VLCcela fonctionne bien, mais je ne peux pas voir ce flux sur Android. (Du moins pas avec RPi Camera Viewer).
Je pense qu'un problème peut provenir de différences mineures entre les structures du flux, comment puis-je les comparer?
Réponses
Des problèmes de visualisation des applications Android ont été causés par une connexion réseau défectueuse.
Il est assez difficile de dire ce qui se passe en détail car je ne peux pas enquêter davantage sur la configuration du point d'accès et d'autres paramètres réseau (y compris les pare-feu) actifs sur le réseau de l'entreprise car je n'ai pas de privilèges d'administrateur réseau, c'est assez frustrant. En fait, en utilisant un point d'accès différent, tout fonctionne comme prévu.