Ich habe festgestellt, dass man unter Linux video4linux2 und ffmpeg verwenden kann, um die Daten aus / dev / video0 zu lesen und das Video von der Webcam zu holen. ffmpeg gibt die Daten in eine Videodatei mit begrenzter Länge aus. Meine Frage ist:
Kann ich den Videostream sowohl zum Remote-Viewer als auch zu einem lokalen Programm leiten, damit ich die Stream-Daten weiterhin in Echtzeit verarbeiten kann?
Vielen Dank.
ffmpeg -f v4l2 -i /dev/video0
Antworten:
Dies ist mit dem Tee Muxer möglich . Geändertes Beispiel aus der Dokumentation:
Beachten Sie, dass die Streams explizit zugeordnet werden müssen, weshalb dies
-map
erforderlich ist.Siehe auch:
quelle
doc/examples
.Ich fand die Antwort von diesem Link , um Webcam als Eingang für Video zu erhalten (mit Bibliothek). Sie müssen nur die Parameter in der Funktion avformat_open_input () definieren.
Zunächst wird die Geräteregistrierung importiert:
avdevice_register_all();
Dann definieren Sie das Eingabeformat:
AVInputFormat *inputFormat =av_find_input_format("v4l2");
Möglich, andere Optionen einzustellen:
AVDictionary *options = NULL;
av_dict_set(&options, "framerate", "25", 0);
Endlich:
avformat_open_input(&pFormatCtx, "/dev/video0", inputFormat, &options);
Danach können Sie jeden von der Eingangsquelle gelesenen und decodierten Frame entweder an das Display oder an eine andere benutzerdefinierte Funktion übergeben.
Hoffe das ist hilfreich für die anderen.
quelle