ffplay hwaccel reproducción mjpeg

ffplay hwaccel reproducción mjpeg

TL;DR: ¿Cómo puedo reproducir transmisiones MJPEG desde mi dispositivo de captura WebCAM/HDMI a través de FFPLAY con aceleración de hardware en Ubuntu 22.04?

Descripción larga:

Tengo algunos dispositivos de captura HDMI económicos que pueden generar transmisiones MJPEG con una resolución de 1920x1080.

Estas son las capacidades de uno de mis dispositivos:https://pastebin.com/9b0yXjEi

Durante mucho tiempo, utilizo la siguiente frase para jugar:

ffplay -fflags nobuffer -f video4linux2 -framerate 30 -video_size 1920x1080 -input_format mjpeg /dev/hdmi-rpi

Esto se inicia casi de inmediato en unos pocos milisegundos y utiliza %15 de una CPU de un solo núcleo + %9 de GPU en mi Ryzen 5700G.

Pero quería ir más allá y aprovechar la aceleración HW. Entonces probé esto:

ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -f v4l2 -framerate 30 -video_size 1920x1080 -input_format mjpeg -i /dev/hdmi-rpi -vcodec rawvideo -f matroska - | ffplay -i -

Pero esto usa %29 CPU + %49 GPU (también se inicia inmediatamente)

Y aún más pruebas con monovolumen:

stulluk ~ $  mpv --demuxer-lavf-format=video4linux2 --demuxer-lavf-o=input_format=mjpeg,video_size=1920x1080,framerate=30 av://v4l2:/dev/hdmi-rpi 
 (+) Video --vid=1 (mjpeg 1920x1080 30.000fps)
[ffmpeg/video] mjpeg: overread 8
VO: [gpu] 1920x1080 yuvj422p
V: 00:00:15 / 00:00:15 (99%)
[ffmpeg/demuxer] video4linux2,v4l2: Some buffers are still owned by the caller on close.
[ffmpeg] ioctl(VIDIOC_QBUF): Bad file descriptor
[ffmpeg] ioctl(VIDIOC_QBUF): Bad file descriptor
[ffmpeg] ioctl(VIDIOC_QBUF): Bad file descriptor

Exiting... (Quit)
stulluk ~ $ 

Con la configuración anterior, MPV usa %13 de CPU y %9 de GPU.

Entonces quiero saber si hay alguna manera de usar HWaccel con FFplay para poder reducir el uso de mi CPU.

Y una adición: ¿Existe alguna forma de utilizar el nuevo renderizador Vulcan con MJPEG? Si es así, ¿cómo compilar FFmpeg y cómo usarlo?

información relacionada