ffplay hwaccel mjpeg 재생

ffplay hwaccel mjpeg 재생

핵심요약: Ubuntu 22.04에서 하드웨어 가속을 사용하여 FFPLAY를 통해 WebCAM/HDMI 캡처 장치에서 MJPEG 스트림을 어떻게 재생할 수 있나요?

긴 설명:

1920x1080 해상도로 MJPEG 스트림을 출력할 수 있는 저렴한 HDMI 캡처 장치가 있습니다.

내 장치 중 하나의 기능은 다음과 같습니다.https://pastebin.com/9b0yXjEi

오랫동안 나는 다음과 같은 한 줄의 내용을 사용하여 플레이했습니다.

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

이는 몇 밀리초 만에 거의 즉시 시작되며 Ryzen 5700G에서 단일 코어 CPU의 15% + GPU의 %9를 사용합니다.

하지만 저는 더 나아가 HW 가속을 활용하고 싶었습니다. 그래서 나는 이것을 시도했습니다 :

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 -

하지만 이것은 %29 CPU + %49 GPU를 사용합니다(즉시 실행되기도 합니다).

MPV를 사용한 추가 테스트:

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

위 설정에서 MPV는 %13 CPU와 %9 GPU를 사용합니다.

그래서 FFplay와 함께 HWaccel을 사용하여 CPU 사용량을 줄일 수 있는 방법이 있는지 알고 싶습니다.

그리고 추가 사항: MJPEG와 함께 새로운 Vulcan 렌더러를 사용할 수 있는 방법이 있습니까? 그렇다면 FFmpeg를 어떻게 컴파일하고 어떻게 사용하나요?

관련 정보