Deploying libsoup on macOS with gstreamer 1.20

Nirbheek Chauhan nirbheek.chauhan at gmail.com
Sat Mar 12 15:49:07 UTC 2022


Hi Jonas,

This is a known issue in the 1.20 release. We have merged fixes for
it, which will be in the 1.20.1 release, which is expected this week.

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1846
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1907

You can either wait for that, or you can build macOS packages yourself
using cerbero's 1.20 branch which will pull in these fixes:

git clone -b 1.20 https://gitlab.freedesktop.org/gstreamer/cerbero/

Please refer to the README for how to build. In a nutshell:

1. Install Python 3.7 or newer
2. Bootstrap: ./cerbero-uninstalled bootstrap
3. Package: ./cerbero-uninstalled package gstreamer-1.0

You can build the universal package with:

./cerbero-uninstalled -c config/cross-macos-universal <command>

Cerbero currently only works on x86_64 macOS.

Cheers,
Nirbheek

On Sat, Mar 12, 2022 at 7:45 PM Jonas Kvinge via gstreamer-devel
<gstreamer-devel at lists.freedesktop.org> wrote:
>
> Hi
>
> I can't get libsoup to work on macOS after upgrading to gstreamer 1.20.
> I get it to work on Windows using libsoup 2.74.2 (with libsoup 3
> playback progress stops around the end of each track).
> I build all libraries including gstreamer myself.
>
> I notice that libgstsoup is no longer dynamically linked to libsoup, but
> instead loaded at runtime. libsoup-2.4.1.dylib is deployed in the
> Frameworks directory.
>
> I see no errors logged on startup related to libsoup, even when setting
> GST_DEBUG to 4. I have tried patching the latest changes to
> gstsouploader.c too.
>
> The following environment variables are set before gst_init:
>
> GIO_EXTRA_MODULES=/Applications/strawberry.app/Contents/MacOS/../PlugIns/gio-modules
> GST_PLUGIN_SCANNER=/Applications/strawberry.app/Contents/MacOS/../PlugIns/gst-plugin-scanner
> GST_PLUGIN_PATH=/Applications/strawberry.app/Contents/MacOS/../PlugIns/gstreamer
> GST_PLUGIN_SYSTEM_PATH=/Applications/strawberry.app/Contents/MacOS/../PlugIns/gstreamer
>
> I have checked that libgstsoup.dylib exists in the gstreamer plugin
> directory, and all dependencies also exist.
>
> libsoup-2.4.1.dylib exists in
> /Applications/strawberry.app/Contents/Frameworks/, copying it into the
> plugin directory does not work either.
>
> otool -L
> /Applications/strawberry.app/Contents/PlugIns/gstreamer/libgstsoup.dylib
>
> /Applications/strawberry.app/Contents/PlugIns/gstreamer/libgstsoup.dylib:
>   /Users/jonas/build/strawberry-macos-dependencies/usr/lib/gstreamer-1.0/libgstsoup.dylib (compatibility version 0.0.0, current version 0.0.0)
>      @loader_path/../../Frameworks/libgstreamer-1.0.0.dylib
> (compatibility version 2001.0.0, current version 2001.0.0)
>      @loader_path/../../Frameworks/libgobject-2.0.0.dylib (compatibility
> version 7104.0.0, current version 7104.0.0)
>      @loader_path/../../Frameworks/libglib-2.0.0.dylib (compatibility
> version 7104.0.0, current version 7104.0.0)
>      @loader_path/../../Frameworks/libintl.8.dylib (compatibility
> version 11.0.0, current version 11.0.0)
>      @loader_path/../../Frameworks/libgstbase-1.0.0.dylib (compatibility
> version 2001.0.0, current version 2001.0.0)
>      @loader_path/../../Frameworks/libgsttag-1.0.0.dylib (compatibility
> version 2001.0.0, current version 2001.0.0)
>      @loader_path/../../Frameworks/libgmodule-2.0.0.dylib (compatibility
> version 7104.0.0, current version 7104.0.0)
>      @loader_path/../../Frameworks/libgio-2.0.0.dylib (compatibility
> version 7104.0.0, current version 7104.0.0)
>      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
> version 1292.100.5)
>
> otool -L
> /Applications/strawberry.app/Contents/Frameworks/libsoup-2.4.1.dylib
>
> /Applications/strawberry.app/Contents/Frameworks/libsoup-2.4.1.dylib:
>   /Users/jonas/build/strawberry-macos-dependencies/usr/lib/libsoup-2.4.1.dylib (compatibility version 13.0.0, current version 13.2.0)
>      @loader_path/libglib-2.0.0.dylib (compatibility version 7104.0.0,
> current version 7104.0.0)
>      @loader_path/libintl.8.dylib (compatibility version 11.0.0, current
> version 11.0.0)
>      @loader_path/libgmodule-2.0.0.dylib (compatibility version
> 7104.0.0, current version 7104.0.0)
>      @loader_path/libgobject-2.0.0.dylib (compatibility version
> 7104.0.0, current version 7104.0.0)
>      @loader_path/libgio-2.0.0.dylib (compatibility version 7104.0.0,
> current version 7104.0.0)
>      @loader_path/libxml2.2.dylib (compatibility version 12.0.0, current
> version 12.13.0)
>      @loader_path/libsqlite3.0.dylib (compatibility version 9.0.0,
> current version 9.6.0)
>      @loader_path/libpsl.5.dylib (compatibility version 9.0.0, current
> version 9.3.0)
>      @loader_path/libbrotlidec.dylib (compatibility version 1.0.0,
> current version 1.0.9)
>      @loader_path/libz.1.dylib (compatibility version 1.0.0, current
> version 1.2.11)
>      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
> version 1292.100.5)
>
>
> Acutal error:
>
> 0:00:05.978931000 69196 0x7f90366ff8c0 WARN uridecodebin
> gsturidecodebin.c:1466:gen_source_element:<uridecodebin0> error: No URI
> handler implemented for "http".
> 04:48:02.721 ERROR GstEnginePipeline:1144 ErrorMessageReceived ID: 1
> Domain: 1834 Code: 12 Error: "No URI handler implemented for \"http\"."
> 04:48:02.722 ERROR GstEnginePipeline:1145 ErrorMessageReceived ID: 1
> Domain: 1834 Code: 12 Debug:
> "../gst-plugins-base-1.20.0/gst/playback/gsturidecodebin.c(1466):
> gen_source_element ():
> /GstPlayBin:pipeline-1-pipeline/GstURIDecodeBin:uridecodebin0"
> 04:48:02.722 ERROR GstEnginePipeline:1144 ErrorMessageReceived ID: 1
> Domain: 1834 Code: 12 Error: "No URI handler implemented for \"http\"."
> 04:48:02.722 ERROR GstEnginePipeline:1145 ErrorMessageReceived ID: 1
> Domain: 1834 Code: 12 Debug:
> "../gst-plugins-base-1.20.0/gst/playback/gsturidecodebin.c(1466):
> gen_source_element ():
> /GstPlayBin:pipeline-1-pipeline/GstURIDecodeBin:uridecodebin0"
> 04:48:02.750 ERROR GstEngine:545                    GStreamer error:
> 1834 12 "No URI handler implemented for \"http\"."
>
> Jonas
>
>


More information about the gstreamer-devel mailing list