构建 Gstreamer 编辑服务失败

2024-03-31

I run ./autogen.sh在克隆的存储库中,它无法显示以下内容:

configure: No package 'gstreamer-plugins-base-1.0' found
configure: error: no gstreamer-plugins-base-1.0 >= 1.14.1 (GStreamer Base Plugins) found
  configure failed

我的 Ubuntu 上安装了 gstreamer(基本的、好的、坏的和丑陋的)。构建脚本查找的包名称是gstreamer-plugins-base-1.0系统包的名称是gstreamer1.0-plugins-base.

深入研究 autoconf 设置,我发现了以下内容:

if test -z $GSTPB_PLUGINS_DIR; then
  GSTPB_PLUGINS_DIR=`$PKG_CONFIG --variable=pluginsdir gstreamer-plugins-base-[$1]`
  if test -z $GSTPB_PLUGINS_DIR; then
    AC_MSG_ERROR(
      [no pluginsdir set in GStreamer Base Plugins pkg-config file])
  fi
fi

难道不应该吗gstreamer[$1]-plugins-base?我在这里错过了什么吗?

Update:

通过安装修复了上述问题libgstreamer1.0-dev and libgstreamer-plugins-base1.0-dev开发包

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

如果默认情况下未安装 GIntrospection,请运行以下命令

sudo apt-get build-dep gstreamer1.0

./autogen.sh将完成并且make && sudo make install也会运行良好。

当前状态:示例不构建稳定的二进制文件。运行 c 示例 segfault 和 python 示例,simple.py, 抱怨失踪GES在命名空间中。

Traceback (most recent call last):
  File "simple.py", line 26, in <module>
    gi.require_version('GES', '1.0')
  File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 130, in require_version
    raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace GES not available

仅供参考:Simple.py 看起来像这样

import gi

gi.require_version('Gst', '1.0')
gi.require_version('GES', '1.0')

from gi.repository import Gst, GES, GLib  # noqa


class Simple:
    def __init__(self, uri):
        timeline = GES.Timeline.new_audio_video()
        self.project = timeline.get_asset()

        self.project.connect("asset-added", self._asset_added_cb)
        self.project.connect("error-loading-asset", self._error_loading_asset_cb)
        self.project.create_asset(uri, GES.UriClip)
        self.layer = timeline.append_layer()
        self._create_pipeline(timeline)
        self.loop = GLib.MainLoop()

    def _create_pipeline(self, timeline):
        self.pipeline = GES.Pipeline()
        self.pipeline.set_timeline(timeline)
        bus = self.pipeline.get_bus()
        bus.add_signal_watch()
        bus.connect("message", self.bus_message_cb)

    def bus_message_cb(self, unused_bus, message):
        if message.type == Gst.MessageType.EOS:
            print("eos")
            self.loop.quit()
        elif message.type == Gst.MessageType.ERROR:
            error = message.parse_error()
            print("error %s" % error[1])
            self.loop.quit()

    def start(self):
        self.loop.run()

    def _asset_added_cb(self, project, asset):
        self.layer.add_asset(asset, 0, 0, Gst.SECOND * 5, GES.TrackType.UNKNOWN)
        self.pipeline.set_state(Gst.State.PLAYING)

    def _error_loading_asset_cb(self, project, error, asset_id, type):
        print("Could not load asset %s: %s" % (asset_id, error))
        self.loop.quit()

if __name__ == "__main__":
    if len(os.sys.argv) != 2:
        print("You must specify a file URI")
        exit(-1)

    Gst.init(None)
    GES.init()
    simple = Simple(os.sys.argv[1])
    simple.start()

运行 C 示例 simple1.c 失败,并显示以下内容:

(simple1:15606): GLib-GObject-WARNING **: 12:42:28.910: invalid (NULL) pointer instance

(simple1:15606): GLib-GObject-CRITICAL **: 12:42:28.910: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(simple1:15606): GLib-GObject-WARNING **: 12:42:28.910: invalid (NULL) pointer instance

(simple1:15606): GLib-GObject-CRITICAL **: 12:42:28.910: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

(simple1:15606): GLib-GObject-CRITICAL **: 12:42:28.910: g_object_set: assertion 'G_IS_OBJECT (object)' failed
[1]    15606 segmentation fault (core dumped)  ./simple1 ~/Downloads/out.mp4

运行gdb,

gst-editing-services/examples/c/simple1": not in executable format: File format not recognized

Update

使用 Meson 构建系统重建示例。这使得可以在 gdb 中运行 bin。得到以下内容

Program received signal SIGSEGV, Segmentation fault.
ges_track_constructed (object=<optimized out>) at ../ges/ges-track.c:506
506         componame =

表明它在 ges-track.c 处失败。相关代码如下:

  if (self->type == GES_TRACK_TYPE_VIDEO) {
    componame =
        g_strdup_printf ("video_%s", GST_OBJECT_NAME (self->priv->composition));
  } else if (self->type == GES_TRACK_TYPE_AUDIO) {
    componame = // This is where it errirs
        g_strdup_printf ("audio_%s", GST_OBJECT_NAME (self->priv->composition));
  }

一行一行地走进去。以下内容被揭晓。

0x00007ffff701c2cd in __GI__dl_catch_exception (exception=exception@entry=0x7fffffffc980,
    operate=0x7ffff54530d0 <dlsym_doit>, args=0x7fffffffc9f0) at dl-error-skeleton.c:194
    194     dl-error-skeleton.c: No such file or directory.

看起来这与 GES 内部结构有关。在内部,glib 对象没有正确创建并且全部为 NULL。为什么你有invalid (NULL) pointer instance.

我能够在我的 Mac 上运行这些示例。包不匹配似乎是这里的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建 Gstreamer 编辑服务失败 的相关文章

  • GStreamer 警告:无法查询视频位置:状态=0,值=-1,持续时间=-1

    我使用 OpenCV 包和face recognition 包来检测我的笔记本电脑网络摄像头上的人脸 每当我运行它时 代码都运行良好 但我遇到了相同的 GStreamer 错误 from imutils video import Video
  • 如何设置非标准 gstreamer 属性的类型?

    我正在尝试设置pattern财产为videotestsrc 按照正常逻辑 我尝试将变量设置为i32和一根绳子 两者都会失败并出现要求特定类型的错误 查看 gstreamer API 我找不到设置该属性的方法 如何强制变量的类型与预期匹配 l
  • GStreamer gst_element_factory_make 失败

    我正在尝试 GStreamer 测试应用程序 但在运行时以下行失败 demuxer gst element factory make oggdemux ogg demuxer returns NULL 我使用 MacOSX 并通过 MacP
  • 在Python中将gstreamer管道转换为opencv

    我使用以下 gstreamer 命令创建了一个网络流 sender gst launch 1 0 v videotestsrc video x raw framerate 20 1 videoscale videoconvert x264e
  • GStreamer 同时录制和查看流

    我手头有一项奇怪的任务 我已经尝试了一切 我想知道你是否能帮忙 我的任务是抓取 RaspPi 发出的流并将其保存到我的电脑上 但是 我需要同时查看和保存它 这可以查看它 gst launch 1 0 udpsrc 端口 5000 应用程序
  • 如何使用 gstreamer 从较长源的片段中制作音频剪辑?

    我想使用 gstreamer 将一个音频文件中的任意剪辑保存到一个新文件中 比如原著中1分钟到2分钟的片段 我该怎么做 你需要gnonlin http wiki pitivi org wiki GNonLin documentation S
  • 将 Gstreamer 与 Qt 连接以便在 Qt Widget 中播放 gstreamer 视频

    我尝试使用声子播放视频但无法成功 Off late通过Qt论坛了解到 即使是最新版本的Qt也不支持phonon 就在那时我开始使用 Gstreamer 关于如何将 Gstreamer 窗口与 Qt 小部件连接有什么建议吗 我的目标是在 Qt
  • 无法从 Gstreamer 找到 get-launch-1.0

    我在 OSX Mac 上运行 我已经在此处找到的 GStreamer 1 5 1 中安装了各种软件包 http gstreamer freedesktop org data pkg osx http gstreamer freedeskto
  • 将 EoS 发送到文件接收器,同时从 tee 中删除分支

    我写了一个v4l2src同时显示和记录的代码 我的管道看起来像 queue videosink v4l2src tee queue filesink 目前我可以一起显示 记录 还可以随意动态启动和停止记录分支 使用 ctrl c sigin
  • WebRTC 连接在本地网络之外无法工作

    我们对 webrtc 双向视频和音频流进行了以下设置 Mobile Android应用程序使用谷歌网络RTC https webrtc org 实现java包装器 测试了这两个库 implementation org webrtc goog
  • 带 PyGTK 崩溃的多线程 Gstreamer (xcb_xlib_threads_sequence_lost)

    我知道不应该从其他线程更新 UIgtk 或面临后果 但我不确定在使用时如何避免这种情况gstreamer 我的应用程序在视频流初始化期间有时会崩溃 并出现以下投诉 xcb Unknown sequence number while proc
  • 如何使用 gstreamer 在两个不同的显示器上同时播放两个不同的视频

    我在用 Raspberry Pi 4 B 型 有 2 个 HDMI 端口 Gstreamer 1 0 我有两个视频保存在存储卡中 我想将两个视频驱动到两个不同的 HDMI 端口 并同时在两个不同的显示器上播放视频 我想知道 Gstreame
  • gstreamer:如何改变从文件中获取的一个流的渲染时间

    我有两个媒体文件 例如 file0 和 file1 我想将它们合并成一个具有 画中画 效果的单个 file0 中的内容要显示在整个窗口上 并且 file1 中的内容将显示在左上角 较小的盒子 还有一点是 file1 中的内容应该被渲染 从基
  • Gstreamer - Android 上的硬件加速视频解码

    我在 Android 手机上通过 RTP UDP 接收视频 但我发现 CPU 使用率非常高 几乎 100 的一个核心都用于解码视频 在高端设备上 视频播放几乎流畅 但在中低端设备上 我几乎每秒无法获得 1 帧 这是一个 H 264 视频流
  • 如何查看 gstreamer 调试输出?

    如何查看 GST CAT INFO GST DEBUG 等函数的输出 我是否需要自己使用调试级别设置来编译 gstreamer 还是可以在应用程序级别完成 可以使用 GST DEBUG 环境变量在 stderr 中打印调试消息 如果 gst
  • GStreamer 如何从流中提取视频帧?

    这是用于从服务器捕获流视频的 python 代码 但我需要编写一个函数来从流中提取一帧 这将是一个按钮 单击它将显示当前帧 我没有想法 谁能帮我这个 self player gst Pipeline player self source g
  • 构建 Gstreamer 编辑服务失败

    I run autogen sh在克隆的存储库中 它无法显示以下内容 configure No package gstreamer plugins base 1 0 found configure error no gstreamer pl
  • GStreamer 上的“列入黑名单”是什么意思?

    我正在尝试交叉编译 GStreamer 版本是1 2 3 主机PC的操作系统是x86 linux 目标系统的操作系统是MIPSEL linux操作系统 我成功为目标设备编译了 gstreamer 和插件 和gst launch 1 0可以被
  • GStreamer 推出用于 ReStreaming IP 摄像机 H264 的 RTSP 服务器

    我将在不同计算机上使用多个客户端 以便能够查看 IP 摄像机流 URL 的视频 由于网络摄像机对连接的客户端数量有限制 因此我想为此目的设置一个流媒体 我用谷歌搜索并尝试使用不同的命令行选项 GStreamer 但尚未成功 这是一个测试命令
  • 在PyGI中获取窗口句柄

    在我的程序中 我使用 PyGObject PyGI 和 GStreamer 在 GUI 中显示视频 该视频显示在Gtk DrawingArea因此我需要获取它的窗口句柄realize 信号处理程序 在 Linux 上 我使用以下方法获取该句

随机推荐

  • 更改 QCheckBox 文本颜色

    我在那里发现了同样的问题 如何在Qt中更改QCheckBox文本标签颜色 https stackoverflow com questions 11153945 how to change qcheckbox text label color
  • 使用 JetPack Compose 更改 Android 语言

    我正在尝试使用 jetpack compose 功能更改应用程序的区域设置 如下所示 Composable fun SetLanguage position Int val locale Locale when position 0 gt
  • 当 SelectionType = ppSelectionNone 时,如何获取 Powerpoint 中可见幻灯片的 SlideIndex

    我有一些代码需要我知道什么SlideIndex进行操作 例如 在哪里插入新幻灯片 在哪里插入 ChartObject 等 大约99 的情况下 我都能成功获得SlideIndex by Dim w as Long slide index va
  • 在 Codename One 中管理我的应用程序的演示/完整版本

    我被命令提供 2 个版本的应用程序 一个演示 轻型 有限功能 另一个完整 所有功能 我的代码中有一个布尔值 它告诉我哪个正在运行 它们都在模拟器或测试设备 iOS 和 Android 上按预期运行 现在我想分发它们 所以我读到这是可能的使用
  • barplot():每组的频率百分比

    我正在尝试制作一个分组条形图 其频率 在 y 轴上 depression meds N Y 在 x 轴上 按另一个变量分组score 低高 到目前为止我的代码 meds lt table data2 depression meds data
  • React,使用本地存储实现暗光模式

    我正在尝试使用use local storage在 React 中实现主题变换器 应用程序组件 import App css import React from react import Navbar SearchBar Header Ma
  • 如何使文本框与背景无法区分?

    我应该将哪种 css 应用到文本框 使其与背景相同 这意味着用户不会觉得他正在文本框中输入内容 我尝试提供相同的背景颜色 但它仍然没有提供我想要的确切内容 用户仍然可以感觉到它是一个文本框 你的意思是这样吗 input border 0 b
  • 在 iBooks 中打开 iPad 文档文件夹中保存的 PDF 文件?

    我已将 pdf 文件保存在 iPad 上的应用程序文档文件夹中 我希望用户在 iPad 上使用 iBooks 打开该 PDF 文件 有什么方法可以打开 iBooks 中保存在应用程序文档文件夹中的 PDF 吗 EDIT Best optio
  • jquery-如何在输入2个数字后自动插入冒号

    我想要一个接受 HH MM 小时 分钟 格式的文本框 因此 当用户输入 HH 值时 它应该自动在后面插入一个冒号 并让用户输入 MM 值 我不想为此使用任何插件 我该怎么做呢 thanks HTML
  • opencv中使用静态库代替动态库

    我在 Visual Studio 2012 中有一个项目 它使用 opencv 动态库 它编译 链接并且运行良好 我想更改项目 使其使用静态库而不是动态库 我将项目 VC 目录中的库目录从 C thirdparty opencv build
  • 您可以/应该在 Xcode 的 xcassets 中存储多少张图像?

    我正在尝试在 xcassets 中存储项目的大量图像 大约2 000 然而 它们都非常小 高度优化 每个只有 3 5kB 左右 因此总大小可能为 6 10MB 这会导致内存问题吗 这是不推荐的吗 我知道我可以让用户根据需要从服务器下载它们
  • 实体框架 LINQ to Entities 加入查询超时

    我正在执行以下 LINQ to Entities 查询 但它被卡住并且直到超时才返回响应 我在 SQL Server 上执行了相同的查询 它在 3 秒内返回 92000 var query from r in WinCtx PartsRou
  • 使用 cancan 进行基于角色的授权不起作用 Rails 4 - Ruby 2.1

    我使用 cancan 1 6 10 和 devise 3 2 2 我一直在使用本指南 https github com ryanb cancan wiki Role Based Authorization wiki many roles p
  • 在 Toastr 中显示错误和异常,或使用 MVC4 和实体框架的类似方法

    我正在尝试找到一种方法 当我的应用程序中发生异常或错误时 使用 Toastr 向用户显示错误 我遇到的问题似乎表明 使用 Toastr 在当前视图中显示的控制器或数据访问层中不可能发生异常 我想知道你们中是否有人遇到过这种情况以及您的解决方
  • 如何在 Vim 中打开文件列表中的文件?

    我在 vim 中打开了一个较长的文件列表 如下所示 dir1 file1 dir2 file2 dir2 file3 如何在同一 vim 会话中以最简单的方式通过拆分或编辑将它们一一打开 我会用 p 表示制表符 vim p cat your
  • 在android中哪里以及如何使用onKey,onkeyDown,onKeyPressed事件?

    你好 在 android 中哪里使用 onKey 和 onKeyUp Down 事件 例如我有一个文本视图 当用户按下任意键时我想在文本视图中显示该字符 在这种情况下 使用哪个事件 上面 PLEASE explain with EXAMPL
  • 在页面卸载之前显示加载 GIF

    我正在开发一个可以在计算机以及 Ipad Iphone 平板电脑和 Android 手机上运行的应用程序 我有一个要求 即当用户从一个页面移动到另一页面时显示正在加载 gif 因为这将为用户提供页面加载 卸载正在进行的信息 所以我尝试了下面
  • Angular - 服务器中更改的图像未反映在视图中

    我有一个 Angular 应用程序 它显示人们的个人资料图像 从服务器加载 并可以选择更改它 当应用程序第一次加载时 图像会正确显示 我调用 Web 服务来更改服务器上的图像 问题是 即使在更改远程服务器上的图像后 即使刷新页面 浏览器上的
  • 如何从分组数据框中的每个组中获取第 n 个元素

    我有一个大数据框 其中有一列 有一个组名称 它分组为dplyr 因此多行具有相同的组名称 为了减少数据 我想从每组的第一个元素开始提取每个第 n 个元素 有没有R way没有循环 用序列对每一行进行子集化 会出现经常丢失每组的第一行的问题
  • 构建 Gstreamer 编辑服务失败

    I run autogen sh在克隆的存储库中 它无法显示以下内容 configure No package gstreamer plugins base 1 0 found configure error no gstreamer pl