Nagrywam wideo z Pi przy użyciu modułu kamery z Picamera:
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()
Użyłem osobno kombinacji raspivid
i gstreamer
do strumieniowego przesyłania wideo z pi bez żadnych opóźnień. Czy istnieje sposób na przechowywanie i przesyłanie strumieniowe materiału przy użyciu Pythona jednocześnie ?
Myślę, że musi istnieć sposób na wykorzystanie kamery jako wejścia i stworzenie dwóch źródeł wyjściowych: wideo 720p do przechowywania i zmniejszone wideo 240p do przesyłania strumieniowego za pomocą gstreamer ...?
streaming-video
koogee
źródło
źródło
raspivid
możesztee
wyprowadzić dane wyjściowe do pliku i gstreamera lub cokolwiek innego (patrzman tee
). Tak długo, jak jeden strumień jest prosto na dysk, nie spowoduje to dużego obciążenia, ale jeśli chcesz przetwarzać dane wejściowe w dwóch różnych formatach jednocześnie, myślę, że będzie to zbyt dużo pracy dla pi.Odpowiedzi:
tee
Komenda czyta ze standardowego wejścia i kopiuje do dowolnej liczby plików plus produkcję standardowej domyślnie zobaczyćman tee
więcej szczegółów. Oznacza to, że możesz poprosić tee o utworzenie pliku na podstawie danych wejściowych, a następnie potokowanie danych wyjściowych do czegoś innego.Dodanie dodatkowej rury teoretycznie dodaje nieco nieefektywności. Jeśli chodzi o to, czy jest to znaczące, czy nie, będziesz musiał sam ocenić, korzystając z własnej metody przesyłania strumieniowego. Moja obecna metoda nie jest zadowalająca przy pełnej rozdzielczości. W tej chwili nie jest to duże zainteresowanie, ale kiedy to nastąpi, spróbuję znaleźć coś lepszego (np. Rzekomo gstreamer działa lepiej niż clvc).
Warto jednak zauważyć, że plik zapisany lokalnie na pi w tym samym czasie ma doskonałą jakość, więc aktywność nie przeszkadza w malowaniu. Oto przykład:
Podzieliłem to na dwie linie dla czytelności; możesz nacisnąć return after
|
(potok) i zakończyć polecenie tak, jak możesz przerwać linię\
. Możesz zamienić nacvlc
co chcesz. Znów, chociaż strumień był niskiej jakości,test_video.h264
wyszedł idealnie.Jeśli obniżę rozdzielczość do 640x360, to ustawienie jest w porządku, z drugim lub dwoma opóźnieniami, które zwykle otrzymuję. Nie sądzę, aby
tee
druga lub druga rura miała jakikolwiek wpływ na jakość strumienia; są one zdolne do znacznie większej przepustowości niż jest to konieczne i nie wymagają dużo zasobów systemowych.Procesor działał na poziomie 35–45%, czyli tak samo jak podczas przesyłania strumieniowego wideo sans
tee
.źródło
record_sequence
która przyjmujesplitter_port
parametr. Istnieje również przykład nagrywania do 4 jednoczesnych wyjść z kamery.W powyższej odpowiedzi nie ma nic złego, ale oto dodatkowa, która dotyczy konkretnie API Picamera. Możesz użyć niestandardowego wyjścia, aby wykonać taki podział (na wiele sposobów) i wysłać wynik do różnych miejsc docelowych. W twoim przypadku, jeśli chcesz nagrać do pliku i gniazda, możesz zrobić coś takiego:
źródło