gpt4 book ai didi

python - 如何将 GStreamer 消息记录到文件中

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:49 26 4
gpt4 key购买 nike

我有一个视频处理守护进程 (python),它运行多个进程,其中一些进程使用 GStreamer 将原始视频帧获取到我的自定义元素 (C)。某些进程“卡住”(进程 is_alive() = True,但 Gstreamer 管道不执行任何操作且不调用任何 python 回调)- 通常在 2-10 天后,并且仅在生产。我无法在我的计算机上复制它。

现在我有来自 python 日志记录(主程序)和 glib 日志记录(C 插件)的日志文件,但没有任何帮助,即使我在各处添加了更多日志消息之后也是如此。所以我希望 GStreamer 的消息中有一些线索。

我在专用于视频处理的进程中运行 glib“主循环”,然后使用 multiprocessing.Queue 将包含结果的消息发送到另一个进程以进行进一步处理。这些 gst/video-processes 对 python 有点陌生——有很多来自 gstreamer 的回调和其他 gstreamer 怪异。这就是为什么我将它们隔离在不同的进程中。

我在回调中有一些 python 日志记录,在 C 插件中有很多 glib 日志记录,但这显然不够。 python 程序和 C 元素之间可能出现故障。所以我真的需要看看 GStreamer 的内部发生了什么。

不幸的是,在我看来,除了拦截 stderr 之外,没有其他方法可以调试 Gstreamer。

我试过在没有守护进程的情况下运行程序,设置 GST_DEBUG 并将 stderr 存储到 gzip 文件中,但这并没有多大帮助,因为我得到了所有GStreamer 消息混合在一个巨大文件中。

总结一下:

  • 我有一个守护进程(因此没有 stderr,没有 stdout)
  • 在守护进程中,我有很多子进程
  • 其中一些(实际上有 14 个)运行 GStreamer 管道
  • 我有一些神秘的失败
  • 我非常需要 GStreamer 调试输出
  • 但我需要将来自每个进程的 GStreamer 消息写入不同的文件,这样我就不会迷失在其中
  • 我不知道该怎么做。

正如评论中所建议的,我可以使用 GST_DEBUG_FILE env.variable,但这适用于 GStreamer 0.10.31。我有 0.10.30,所以我不能使用它。
或者我可以编写自定义日志处理程序,但由于它必须用 python 编写,并且 `gst_debug_log_default' 不能从 python 绑定(bind)访问,所以这也不起作用(也许我错了)。

最佳答案

您将编写自己的日志处理程序。这是一个 similar问题及其答案。请看看这是否有帮助。

关于python - 如何将 GStreamer 消息记录到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19491597/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com