Gstreamer 在 Mac 上找不到内置摄像头

Gstreamer cannot find internal camera on a Mac

我已经在 mac 上通过自制软件安装了 Gstreamer。我想流式传输 mac 的内部摄像机的镜头,但是当我 运行 gst-device-monitor-1.0 我不断收到 Probing devices... Failed to start device monitor!

我也尝试 运行 使用 GST_DEBUG=2 使用相同的命令然后我得到

WARN devicemonitor gstdevicemonitor.c:501:gst_device_monitor_start:<devicemonitor0> No filters have been set, will expose all devices found
0:00:00.002759000 24294 0x7ffc5151c190 WARN devicemonitor gstdevicemonitor.c:507:gst_device_monitor_start:<devicemonitor0> No providers match the current filters

我运行宁的版本是

gst-device-monitor-1.0 version 1.20.0
GStreamer 1.20.0

我如何让它工作?我已经检查了 mac 设置,但没有看到任何阻止它的东西。如何让 gstreamer 看到我的 mac 的内部摄像头?

我的 Mac(M1,macOS 蒙特雷)也有同样的问题。这是 gst-device-monitor-1.0 的问题。根据其source code找不到任何对应的设备供应商:

  if (monitor->priv->filters->len == 0) {
    GST_WARNING_OBJECT (monitor, "No filters have been set, will expose all "
        "devices found");
    gst_device_monitor_add_filter_unlocked (monitor, NULL, NULL);
  }

  if (monitor->priv->providers->len == 0) {
    GST_OBJECT_UNLOCK (monitor);
    GST_WARNING_OBJECT (monitor, "No providers match the current filters");
    return FALSE;
  }

问题出现在一年前,至今未解决: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/780 https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/667

gstreamer 本身仍然可以访问 macOS 上的视频(包括 mac 的内部摄像头)和音频源。

视频:

gst-launch-1.0 avfvideosrc device-index=0 ! video/x-raw, framerate=30/1, width=1280, height=720 ! queue ! autovideosink

音频:

gst-launch-1.0 -v osxaudiosrc device=0 ! audio/x-raw ! queue ! autoaudiosink

注意:avfvideosrcgst-plugins-bad 的一部分,osxaudiosrc - gst-plugins-good

的一部分