Qual é o formato de saída correto do ffmpeg para um dispositivo de loopback v4l2?

1

Seguindo o guia em esta pergunta eu fiz:

$ 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

O dispositivo /dev/video0 aparece como esperado, mas o comando ffmpeg falha com a seguinte saída:

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

Eu já tentei seguir as sugestões abaixo da resposta sem sucesso. Notei que a v4l2 está listada como demux apenas em ffmpeg -formats . Isso significa que não posso usá-lo para saída para /dev/video0 ? Se sim, o que devo usar em vez disso? Eu tentei h264 , mas que falha após ~ 1000 frames com a seguinte mensagem de erro:

$ 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!
    
por Nobody 13.06.2018 / 14:38

1 resposta

2

v4l2loopback v0.11.0 tem um bug que agora está corrigido, por isso não há necessidade de alterar manualmente código fonte como mostrado no relatório de erros. A partir de agora, não há nenhuma versão de lançamento mais recente com a correção, portanto atualize para a ramificação principal que contém a correção.

Instalando

Arch Linux

Até que uma nova versão seja lançada, você pode usar o pacote AUR v4l2loopback-dkms-git em vez de 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 exemplos

Agarre a área de trabalho:

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

Enviar arquivo:

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

Reproduzindo o vídeo

ffplay

ffplay -f v4l2 /dev/video0

mpv

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

VLC

Mídia Dispositivo de Captura Aberto

    
por 14.06.2018 / 20:49