Anaconda Gstreamer Gst 包缺少“jpegenc”

问题描述

我最近一直在使用 python 中的 gstreamer。我在 anaconda 虚拟环境下工作。

我遇到了一个问题,jpegenc 似乎是一个无法访问的元素。
gst_parse_error: no element "jpegenc" (1)

根据要求,整个错误

File "---/gstreamer_test.py",line 15,in <module>
pipeline = Gst.parse_launch("v4l2src ! video/x-raw,framerate=30/1,width=640,height=480 ! jpegenc ! appsink name=sink")
gi.repository.GLib.Error: gst_parse_error: no element "jpegenc" (1)

Gst inspect 确认在 anaconda 环境中未列出 jpegenc。这表示如果我停用 anaconda 环境,正常的命令行 gst inspect 可以找到 jepgenc。

有谁知道 anaconda 中 jepgenc 的快速修复方法?宁愿不从源代码构建。

Python 版本

Python 3.8.6 | packaged by conda-forge

蟒蛇版

conda 4.9.2

软件包版本

gst-plugins-base          1.14.5               h0935bb2_2    conda-forge
gst-plugins-good          1.14.5               h08bb679_2    conda-forge
gstreamer                 1.18.3               h3560a44_0    conda-forge

解决方法

我暂时找到了一个可行的解决方案。但是,它并没有扩展到我希望涵盖的所有用例。我的网络摄像头可以本地生成已编码为 jpeg 的 mjpeg。因此,您需要做的就是从源中指定要使用的输出类型,如下所示。

pipeline = Gst.parse_launch("v4l2src ! image/jpeg,framerate=30/1,width=640,height=480 ! appsink name=sink")

这仍然不能解决没有原生 jpeg 编码的相机的问题,或者我想对传入的非 jpeg 流进行转码的情况。