首页 > 解决方案 > 在 GStreamer 中不使用 videoconvert 将 YUV420 转换为 BGR

问题描述

我正在使用 GSteamer,我想将 I420 转换为 BGR 格式。管道:

gst-launch-1.0 filesrc location= ./Big_Buck_Bunny_1080_10s_1MB.mp4 ! qtdemux ! h264parse ! avdec_h264 ! fakesink

我不使用videoconvert插件,因为它需要很多 CPU 工作量。我看到 avdec_h264 插件支持 BGR 格式,我尝试选择 BGR 格式,但输出总是给出 I420 格式(“avdec_h264!video/x-raw,format=BGR!”)。

我试图在源代码(gst-libav/ext/libav/gstavvidec.c\gst_ffmpeg_pixfmt_to_videoformat())中将其转换为 BGR 格式,但在 (gst-libav/gst-libs/ext/libav/libavcodec/decode .c), 1606

for (i = 0; i < num_planes; i++) {
            av_assert0(frame->data[i]);
        }

我的方法正确吗?我应该修改 decode.c 中的 num_planes 吗?如果这不是正确的方法,我可以使用 OpenCV 和 GStreamer 管道转换格式吗?

如果你有什么好的方法,也请告诉我。

标签: clinuxopencvffmpeggstreamer

解决方案


推荐阅读