Каков правильный формат вывода ffmpeg для петлевого устройства v4l2?

837
Nobody

Следуя руководству в этом вопросе, я сделал:

$ 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 

Устройство /dev/video0отображается должным образом, но команда ffmpeg завершается неудачно со следующими выводами:

$ 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! 

Я уже пытался следовать предложенным ниже ответам безрезультатно. Я заметил, что v4l2 указан только как demux в ffmpeg -formats. Означает ли это, что я не могу использовать его для вывода на /dev/video0? Если так, что я должен использовать вместо этого? Я пытался, h264но после примерно 1000 кадров происходит сбой со следующим сообщением об ошибке:

$ 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 ответ на вопрос

2
LordNeckbeard

v4l2loopback v0.11.0 имеет ошибку, которая теперь исправлена, поэтому нет необходимости вручную изменять исходный код, как показано в отчете об ошибке. На данный момент нет более новой версии выпуска с исправлением, поэтому обновите ветку master, которая содержит исправление.

Установка

Arch Linux

До выхода новой версии вы можете использовать пакет AUR v4l2loopback-dkms-git вместо v4l2loopback-dkms .

Debian & 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 Примеры

Захватить рабочий стол:

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

Отправить файл:

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

Воспроизведение видео

ffplay

ffplay -f v4l2 /dev/video0 

mpv

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

VLC

НосительУстройство Open Capture

И я думал, что виноват ffmpeg. Однако я нахожу вывод `-formats` немного запутанным. Они должны были разделить `DE v4l2` и` D video4linux2` в одиночку. Nobody 5 лет назад 0

Похожие вопросы