Ich nehme Video von Pi mit dem Kameramodul mit Picamera auf:
import picamera
with picamera.PiCamera() as camera:
camera.resolution = (640, 480)
camera.start_recording('1.h264')
camera.wait_recording(5)
for i in range(2, 11):
camera.split_recording('%d.h264' % i)
camera.wait_recording(5)
camera.stop_recording()
Ich habe separat eine Kombination von raspivid
und verwendet, gstreamer
um Videos von pi ohne Verzögerung zu streamen. Gibt es eine Möglichkeit, Filmmaterial gleichzeitig mit Python zu speichern und zu streamen ?
Meiner Meinung nach muss es eine Möglichkeit geben, die Kamera als Eingabe zu verwenden und zwei Ausgabequellen zu erstellen: ein 720p-Video für die Speicherung und ein verkleinertes 240p-Video für das Streaming mit gstreamer ...?
streaming-video
Koogee
quelle
quelle
raspivid
Sietee
die Ausgabe in eine Datei und einen Gstreamer oder was auch immer (sieheman tee
). Solange ein Stream direkt auf die Festplatte übertragen wird, entsteht kein großer Overhead. Wenn Sie jedoch die Eingabe gleichzeitig in zwei verschiedene Formate verarbeiten möchten, ist dies meiner Meinung nach zu viel Arbeit für den Pi.Antworten:
Der
tee
Befehl liest von der Standardeingabe und kopiert standardmäßig in eine beliebige Anzahl von Dateien plus Standardausgabe.man tee
Weitere Informationen finden Sie unter. Dies bedeutet, dass Sie tee bitten können, eine Datei aus der Eingabe zu erstellen und die Ausgabe dann an etwas anderes weiterzuleiten.Das Hinzufügen eines zusätzlichen Rohrs führt theoretisch zu einer gewissen Ineffizienz. Ob dies von Bedeutung ist oder nicht, müssen Sie anhand Ihrer eigenen Streaming-Methode selbst beurteilen. Meine derzeitige Methode ist bei voller Auflösung nicht zufriedenstellend. Es ist momentan kein großes Interesse, aber wenn es so ist, werde ich versuchen, etwas Besseres zu finden (zB angeblich funktioniert gstreamer besser als clvc).
Es ist jedoch erwähnenswert, dass die gleichzeitig lokal auf dem Pi gespeicherte Datei von perfekter Qualität ist, sodass die Aktivität die Raspivid nicht beeinträchtigt. Hier ist ein Beispiel:
Ich habe dies zur besseren Lesbarkeit in zwei Zeilen unterteilt. Sie können die Eingabetaste nach
|
(Pipe) drücken und den Befehl beenden, genauso wie Sie eine Zeile mit brechen können\
. Sie können dascvlc
durch alles ersetzen, was Sie wollen. Obwohl der Stream von schlechter Qualität war,test_video.h264
kam er wieder perfekt heraus.Wenn ich die Auflösung auf 640x360 reduziere, ist diese Anordnung in Ordnung, mit ein oder zwei Sekunden Latenz, die ich normalerweise bekomme. Ich glaube nicht, dass die
tee
oder die zweite Pipe einen Unterschied für die Qualität des Streams macht. Diese können einen viel höheren Durchsatz erzielen als hier erforderlich und erfordern nicht viel Systemressourcen.Die CPU lief mit 35-45%, was dem Streaming von Videos ohne Video entspricht
tee
.quelle
record_sequence
, die einensplitter_port
Parameter akzeptiert . Es gibt auch ein Beispiel für die Aufzeichnung von bis zu 4 gleichzeitigen Ausgängen von der Kamera.Mit der obigen Antwort auf Goldlöckchen ist überhaupt nichts falsch, aber hier ist eine zusätzliche, die sich speziell mit der Picamera-API befasst. Sie können eine benutzerdefinierte Ausgabe verwenden , um eine solche Aufteilung durchzuführen (so viele Möglichkeiten wie Sie möchten) und die Ausgabe an eine Vielzahl von Zielen zu senden. In Ihrem Fall könnten Sie Folgendes tun, wenn Sie in eine Datei und einen Socket aufnehmen möchten:
quelle