Welches ist das richtige ffmpeg-Ausgabeformat für ein v4l2-Loopback-Gerät?

979
Nobody

Dem Leitfaden in dieser Frage folgend habe ich Folgendes getan:

$ sudo modprobe v4l2loopback $ ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0 

Das Gerät /dev/video0wird wie erwartet angezeigt, der Befehl ffmpeg schlägt jedoch mit folgender Ausgabe fehl:

$ ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0 ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers ... [x11grab @ 0x559767794cc0] Stream #0: not enough frames to estimate rate; consider increasing probesize .... [v4l2 @ 0x55976779e6c0] ioctl(VIDIOC_G_FMT): Invalid argument Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument Error initializing output stream 0:0 --  Conversion failed! 

Ich habe bereits versucht, den folgenden Empfehlungen zu folgen, ohne Erfolg. Ich habe festgestellt, dass v4l2 nur in demux als demux aufgeführt ist ffmpeg -formats. Bedeutet das, dass ich es nicht für die Ausgabe verwenden kann /dev/video0? Wenn ja, was soll ich stattdessen verwenden? Ich habe versucht, h264aber das stürzt nach ~ 1000 Frames mit der folgenden Fehlermeldung ab:

$ ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f h264 /dev/video0 ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers ... [x11grab @ 0x55da61e29cc0] Stream #0: not enough frames to estimate rate; consider increasing probesize ... File '/dev/video0' already exists. Overwrite ? [y/N] y .... Error writing trailer of /dev/video0: Invalid argument .... Conversion failed! 
1

1 Antwort auf die Frage

2
LordNeckbeard

v4l2loopback v0.11.0 hat einen Fehler, der jetzt behoben wurde. Es ist daher nicht erforderlich, den Quellcode wie im Fehlerbericht angezeigt manuell zu ändern. Ab sofort gibt es keine neuere Release-Version mit dem Fix. Aktualisieren Sie daher auf den Master-Zweig, der den Fix enthält.

Installieren

Arch Linux

Bis eine neue Release-Version herauskommt, können Sie das AUR-Paket v4l2loopback-dkms-git anstelle von v4l2loopback-dkms verwenden .

Debian und Ubuntu

sudo apt-get remove v4l2loopback-dkms sudo apt-get install build-essential libelf-dev linux-headers-$(uname -r) unzip wget https://github.com/umlaeute/v4l2loopback/archive/master.zip unzip master.zip cd v4l2loopback-master make sudo make install sudo depmod -a sudo modprobe v4l2loopback 

ffmpeg Beispiele

Grab Desktop:

ffmpeg -f x11grab -framerate 25 -video_size 1280x720 -i :0.0+0,0 -f v4l2 /dev/video0 

Datei senden:

ffmpeg -re input.mp4 -f v4l2 /dev/video0 

Video abspielen

ffplay

ffplay -f v4l2 /dev/video0 

mpv

mpv --demuxer-lavf-format v4l2 /dev/video0 

VLC

MedienÖffnen Sie das Aufnahmegerät

Und ich dachte, dass ffmpeg schuld war. Allerdings finde ich die Ausgabe von `-formats 'etwas verwirrend. Sie sollten "DE v4l2" und "D video4linux2" allein trennen. Nobody vor 5 Jahren 0