c - 在 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 管道转换格式吗?
如果你有什么好的方法,也请告诉我。
解决方案
推荐阅读
- apigee - lookupcache.LookupCachePolicy.cachehit 在请求中显示 true 或 false
- html - 左粘性位置在较小的屏幕上不起作用(保持粘性 div 宽度)
- html - 解压一个目录并将其保存到 Flask 中的另一个目录中
- c++ - 抛出异常:写访问冲突。temp 为 nullptr
- alexa - Alexa 技能:无法将 undefined 或 null 转换为对象
- javascript - 复制到剪贴板不适用于隐藏输入
- android - 如何在通知android中设置自定义点击
- javascript - 如何禁用在 v-time-picker 小部件中选择分钟?
- python - 如何在 Windows 10 的 python 中安装模块 pybluez
- android - 我怎样才能在drawable中绘制这个形状