Anaconda Gstreamer Gst packge 缺少“jpegenc”

Posted

技术标签:

【中文标题】Anaconda Gstreamer Gst packge 缺少“jpegenc”【英文标题】:Anaconda Gstreamer Gst packge lacking "jpegenc" 【发布时间】:2021-01-20 21:00:48 【问题描述】:

我最近在 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 检查确认在 anaconda 环境中 jpegenc 未列出。这表示如果我停用 anaconda 环境,正常命令行 gst 检查可以找到 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

【问题讨论】:

总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)(不是注释)。还有其他有用的信息。 【参考方案1】:

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

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

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

【讨论】:

我已经不再使用 anaconda 了。进行直接安装时似乎不会出现此问题。我已切换到 Docker 进行环境隔离。无论如何,它更接近我的生产环境。

以上是关于Anaconda Gstreamer Gst packge 缺少“jpegenc”的主要内容,如果未能解决你的问题,请参考以下文章

使用 gstreamer 和 gst-launch 循环播放视频?

使用 Gstreamer 接收音频流导致原因未协商错误

GStreamer-CRITICAL **:gst_element_get_state:Opencv 中的断言“GST_IS_ELEMENT(元素)”失败错误

Gstreamer 元素在 c 程序中不可用,但使用 gst-tools 确实可用

C++ gstreamer函数使用总结

gstreamer开发之--- gst-inspect-1.0