gpt4 book ai didi

macos - GStreamer 非法硬件指令

转载 作者:行者123 更新时间:2023-12-04 16:08:51 25 4
gpt4 key购买 nike

我正在尝试学习 GStreamer。我使用的是 macOS 10.13-x86_64。
我开始研究 this教程。

最初我安装了 GStreamer .pkg 文件。
GStreamer 安装在 /Library/Frameworks/GStreamer.framework
我设法编译并运行了教程,但我需要使用 sudo 访问 /Library/Frameworks/GStreamer.framework 目录。

后来发现可以通过homebrew安装GStreamer。
因此,我手动删除了 /Library/Frameworks/GStreamer.framework 并运行以下命令:

brew install gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav

不幸的是,本教程现在会抛出运行时错误。

./basic-1
[1] 1873 illegal hardware instruction ./basic-1

我尝试用 lldb 调试错误(我对 lldb 很陌生,几乎什么都不会)。

lldb basic-1
(lldb) target create "basic-1"
Current executable set to 'basic-1' (x86_64).
(lldb) run
Process 2129 launched: '/Users/aleksey/projects/media/gstreamer-dummy/basic-1' (x86_64)
Process 2129 stopped
* thread #14, stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
frame #0: 0x00007fff3b0e3939 CoreFoundation`__CFRunLoopDeallocate + 537
CoreFoundation`__CFRunLoopDeallocate:
-> 0x7fff3b0e3939 <+537>: ud2
0x7fff3b0e393b <+539>: nopl (%rax,%rax)

CoreFoundation`__CFRunLoopCleanseSources:
0x7fff3b0e3940 <+0>: pushq %rbp
0x7fff3b0e3941 <+1>: movq %rsp, %rbp
Target 0: (basic-1) stopped.

我不知道该怎么办。

我编译代码

gcc -Wall basic-tutorial-1.c -o basic-1 $(pkg-config --cflags --libs gstreamer-1.0)

我有以下配置

$ pkg-config --cflags --libs gstreamer-1.0
-D_REENTRANT -I/usr/local/Cellar/gstreamer/1.12.3/include/gstreamer-1.0 -I/usr/local/Cellar/glib/2.54.1/include/glib-2.0 -I/usr/local/Cellar/glib/2.54.1/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.41/include -L/usr/local/Cellar/gstreamer/1.12.3/lib -L/usr/local/Cellar/glib/2.54.1/lib -L/usr/local/opt/gettext/lib -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -lintl -Wl,-framework -Wl,CoreFoundation

你能帮我解决这个问题吗?有什么问题?

最佳答案

我有同样的问题,我找到了一些答案 here (https://bugzilla.gnome.org/show_bug.cgi?id=790242)。我在这里等待一些额外的评论 https://github.com/sdroege/gstreamer-rs/issues/58

总结:

Remi Achard Apr 11, 2020; 7:55pmRe: Illegal hardware instructions when running basic-tutorial-1 on mac OS 10.15.2 / brew installation

It appears tutorials (at least the first ones) don't work on macOS for some years now.

[Sebastian Dröge (slomo) 2017-11-12 12:41:44 UTC]

See https://github.com/sdroege/gstreamer-rs/issues/58 , same applies to the C tutorials.

The problem is that for osxvideosink and glimagesink we need to run aNSRunLoop on the main thread on macOS. Our patched GLib version doesthat when you run a GMainLoop (upstream GLib doens't!), but theexamples are only using gst_bus_timed_pop_filtered() so that alsowouldn't help.

Using a GMainLoop would make the tutorials quite a bit morecomplicated, more API would have to be introduced, there would alwaysbe callbacks, etc.

Not sure what to do about this!

可能的解决方案:

[Kornel 2017-11-12 13:34:16 UTC]

I've managed to get simple examples working by running the example ona thread, and calling CFRunLoopRun() on the main thread. It requiresonly linking with the foundation.framework.


[更新01]我能够成功编译并运行 Basic tutorial 12: Streaming .


[更新02]

From: Sebastian Dröge [Dec 29, 2020 11:53am GMT+0100]

It's not that you need a GLib main loop, but macOS requires you torun a NSRunLoop on the main thread for various macOS APIs to workcorrectly. The GStreamer video sinks use such APIs. The GLib mainloop(from the GLib version shipped with the GStreamer binaries!) runs aNSRunLoop itself for this very reason. This is a limitation on macOSthat you'll have to accommodate somehow and is unrelated to GStreamer,and that should probably be mentioned more prominently in theGStreamer documentation.

More info: https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/79


其他相关帖子 1 , 3 , 4 .

关于macos - GStreamer 非法硬件指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46773324/

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