Я использую аппаратное кодирование через FFMPEG и код h264_v4l2m2m c.
Если я использую FFmpeg h264_v4l2m2m, кодированное видео выглядит как this
ffmpeg -i small.mp4 -vcodec h264_v4l2m2m grb_2-v4l2.avi
[h264_v4l2m2m @ 0x13d24d0] driver 'bcm2835-codec' on card 'bcm2835-codec-isp'
[h264_v4l2m2m @ 0x13d24d0] driver 'bcm2835-codec' on card 'bcm2835-codec-encode'
[h264_v4l2m2m @ 0x13d24d0] Using device /dev/video11
[h264_v4l2m2m @ 0x13d24d0] driver 'bcm2835-codec' on card 'bcm2835-codec-encode'
[h264_v4l2m2m @ 0x13d24d0] Failed to set number of B-frames
Last message repeated 1 times
[h264_v4l2m2m @ 0x13d24d0] Failed to set header mode
[h264_v4l2m2m @ 0x13d24d0] Failed to set gop size
[h264_v4l2m2m @ 0x13d24d0] h264 profile not found
[h264_v4l2m2m @ 0x13d24d0] Encoder adjusted: qmin (0), qmax (51)
[h264_v4l2m2m @ 0x13d24d0] Failed to set minimum video quantizer scale
[h264_v4l2m2m @ 0x13d24d0] Failed to set maximum video quantizer scale
И во время обработки:
[avi @ 0x145aa20] Non-monotonous DTS in output stream 0:0; previous: 0, current: 0; changing
to 1. This may result in incorrect timestamps in the output file.
Если контейнер видео не является AVI, тогда полученное видео будет пустым.
Я хочу использовать этот кодировщик в качестве внутреннего кода c для OpenCV. Если я пытаюсь его использовать, я получаю следующую ошибку:
This encoder requires using the avcodec_send_frame() API
Что такое обходной путь и где мне искать?
- Машина: Raspberry Pi 4B +
- Система: Custom Yocto Distribution (основные ветви)
- Версия OpenCV: 4.1.0
- Версия FFMpeg: 4.2.2