Я использую GSteamer и хочу конвертировать I420 в формат BGR.Конвейер:
gst-launch-1.0 filesrc location= ./Big_Buck_Bunny_1080_10s_1MB.mp4 ! qtdemux ! h264parse ! avdec_h264 ! fakesink
Я не использую плагин videoconvert , потому что он требует много нагрузки на процессор.Я увидел, что плагины avdec_h264 поддерживают формат BGR, и я попытался выбрать формат BGR, но вывод всегда дает формат I420 («avdec_h264! Video / x-raw, format = BGR!»).
Я попытался преобразовать его в формат BGR в исходном коде ( gst-libav / ext / libav / gstavvidec.c \ gst_ffmpeg_pixfmt_to_videoformat () ), но получилошибка в (gst-libav / gst-libs / ext / libav / libavcodec / decode.c), 1606
for (i = 0; i < num_planes; i++) {
av_assert0(frame->data[i]);
}
Исправлен ли мой путь?Должен ли я изменить num_planes в deocode.c?Если это неправильный способ, могу ли я преобразовать формат с помощью OpenCV с конвейером GStreamer?
Если у вас есть какой-то хороший способ, скажите, пожалуйста, также.