<div dir="ltr">Thank you for the information! Good to know the Rust bindings should just work.<div><br></div><div>I made progress, but I am currently stuck on a SegFault. Not sure whether this is a bug, or something I am doing wrong.</div><div><br></div><div>I've attached the DockerFile (builds Google Storage and uses it to build GStreamer+GS-plugin). </div><div><br></div><div>After copying my service account credentials .json to the docker container and setting 'GOOGLE_APPLICATION_CREDENTIALS', I try to refer to my video in storage. This is output when using 'gdb':</div><div><pre style="color:rgb(0,0,0);background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Starting <span style="color:rgb(7,71,38)">program</span>: /usr/local/bin/gst-launch-<span style="color:rgb(0,128,0)">1.0</span> gssrc location=gs:<span style="color:rgb(7,71,38)">/</span>/datastorage-test/videos/test1.mp4
warning: Error disabling address space randomization: Operation not permitted
<span style="color:rgb(105,105,105)">[Thread debugging using libthread_db enabled]</span>
Using host libthread_db library<span style="color:rgb(0,0,230)"> "/lib/x86_64-linux-gnu/libthread_db.so.1"</span>.
Setting pipeline to PAUSED ...
<span style="color:rgb(105,105,105)">[New Thread 0x7f8b48e2b700 (LWP 208)]</span>
<span style="color:rgb(105,105,105)">[Thread 0x7f8b48e2b700 (LWP 208) exited]</span>
<span style="color:rgb(105,105,105)">[New Thread 0x7f8b48e2b700 (LWP 209)]</span>
<span style="color:rgb(105,105,105)">[Thread 0x7f8b48e2b700 (LWP 209) exited]</span>
<span style="color:rgb(105,105,105)">[New Thread 0x7f8b48e2b700 (LWP 210)]</span>
<span style="color:rgb(105,105,105)">[Thread 0x7f8b48e2b700 (LWP 210) exited]</span>

Thread <span style="color:rgb(0,140,0)">1</span><span style="color:rgb(0,0,230)"> "gst-launch-1.0"</span> received signal SIGSEGV, Segmentation fault.
<span style="color:rgb(0,128,0)">0x00007f8b4af70827</span> in gst_gs_src_start (basesrc=<optimized out>) at /usr/include/<span style="color:rgb(7,71,38)">c</span>++/<span style="color:rgb(0,140,0)">8</span>/bits/hashtable_policy.h:<span style="color:rgb(0,140,0)">389</span>
<span style="color:rgb(0,140,0)">389</span>           _Node_const_iterator(__node_type* __p) noexcept
</pre></div><div><br></div><div>Using a URL that does not exist gives me the following output, which looks like some things work:<br><pre style="color:rgb(0,0,0);background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">root<span style="color:rgb(255,255,255);background:rgb(221,0,0);font-weight:bold;font-style:italic">@90f2e355d926</span><span style="color:rgb(128,0,128)">:</span><span style="color:rgb(128,128,48)">/</span><span style="color:rgb(128,128,48)">#</span> gst<span style="color:rgb(128,128,48)">-</span>launch<span style="color:rgb(128,128,48)">-</span><span style="color:rgb(0,128,0)">1.0</span> gssrc location<span style="color:rgb(128,128,48)">=</span>gs<span style="color:rgb(128,0,128)">:</span><span style="color:rgb(105,105,105)">//datastorage-test/videos/test1a.mp4</span>
Setting pipeline to PAUSED <span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">.</span>
<span style="color:rgb(227,74,220)">ERROR:</span> from element <span style="color:rgb(128,128,48)">/</span>GstPipeline<span style="color:rgb(128,0,128)">:</span>pipeline0<span style="color:rgb(128,128,48)">/</span>GstGsSrc<span style="color:rgb(128,0,128)">:</span>gssrc0<span style="color:rgb(128,0,128)">:</span> Could not get object metadata <span style="color:rgb(128,128,48)">(</span>Permanent error in GetObjectMetadata<span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(255,255,255);background:rgb(221,0,0);font-weight:bold;font-style:italic">{</span>
  <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">error</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(255,255,255);background:rgb(221,0,0);font-weight:bold;font-style:italic">{</span>
    <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">code</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(0,140,0)">404</span><span style="color:rgb(128,128,48)">,</span>
    <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">message</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">No such object: datastorage-test/videos/test1a.mp4</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,128,48)">,</span>
    <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">errors</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(128,128,48)">[</span>
      <span style="color:rgb(255,255,255);background:rgb(221,0,0);font-weight:bold;font-style:italic">{</span>
        <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">message</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">No such object: datastorage-test/videos/test1a.mp4</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,128,48)">,</span>
        <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">domain</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">global</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,128,48)">,</span>
        <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">reason</span><span style="color:rgb(128,0,0)">"</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(128,0,0)">"</span><span style="color:rgb(0,0,230)">notFound</span><span style="color:rgb(128,0,0)">"</span>
      <span style="color:rgb(255,255,255);background:rgb(221,0,0);font-weight:bold;font-style:italic">}</span>
    <span style="color:rgb(128,128,48)">]</span>
  <span style="color:rgb(255,255,255);background:rgb(221,0,0);font-weight:bold;font-style:italic">}</span>
<span style="color:rgb(255,255,255);background:rgb(221,0,0);font-weight:bold;font-style:italic">}</span>
<span style="color:rgb(128,128,48)">)</span>
Additional debug info<span style="color:rgb(128,0,128)">:</span>
<span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">/</span>gst<span style="color:rgb(128,128,48)">-</span>build<span style="color:rgb(128,128,48)">/</span>subprojects<span style="color:rgb(128,128,48)">/</span>gst<span style="color:rgb(128,128,48)">-</span>plugins<span style="color:rgb(128,128,48)">-</span>bad<span style="color:rgb(128,128,48)">/</span>ext<span style="color:rgb(128,128,48)">/</span>gs<span style="color:rgb(128,128,48)">/</span>gstgssrc<span style="color:rgb(128,128,48)">.</span>cpp<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(0,140,0)">491</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">:</span> gst_gs_src_start <span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(128,128,48)">/</span>GstPipeline<span style="color:rgb(128,0,128)">:</span>pipeline0<span style="color:rgb(128,128,48)">/</span>GstGsSrc<span style="color:rgb(128,0,128)">:</span>gssrc0<span style="color:rgb(128,0,128)">:</span>
<span style="color:rgb(96,48,0)">system</span> error<span style="color:rgb(128,0,128)">:</span> Success
<span style="color:rgb(227,74,220)">ERROR:</span> pipeline doesn't want to preroll<span style="color:rgb(128,128,48)">.</span>
<span style="color:rgb(227,74,220)">ERROR:</span> from element <span style="color:rgb(128,128,48)">/</span>GstPipeline<span style="color:rgb(128,0,128)">:</span>pipeline0<span style="color:rgb(128,128,48)">/</span>GstGsSrc<span style="color:rgb(128,0,128)">:</span>gssrc0<span style="color:rgb(128,0,128)">:</span> GStreamer error<span style="color:rgb(128,0,128)">:</span> state change failed and some element failed to post a proper error message with the reason <span style="color:rgb(128,0,0);font-weight:bold">for</span> the failure<span style="color:rgb(128,128,48)">.</span>
Additional debug info<span style="color:rgb(128,0,128)">:</span>
<span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">/</span>gst<span style="color:rgb(128,128,48)">-</span>build<span style="color:rgb(128,128,48)">/</span>subprojects<span style="color:rgb(128,128,48)">/</span>gstreamer<span style="color:rgb(128,128,48)">/</span>libs<span style="color:rgb(128,128,48)">/</span>gst<span style="color:rgb(128,128,48)">/</span>base<span style="color:rgb(128,128,48)">/</span>gstbasesrc<span style="color:rgb(128,128,48)">.</span>c<span style="color:rgb(128,128,48)">(</span><span style="color:rgb(0,140,0)">3557</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">:</span> gst_base_src_start <span style="color:rgb(128,128,48)">(</span><span style="color:rgb(128,128,48)">)</span><span style="color:rgb(128,0,128)">:</span> <span style="color:rgb(128,128,48)">/</span>GstPipeline<span style="color:rgb(128,0,128)">:</span>pipeline0<span style="color:rgb(128,128,48)">/</span>GstGsSrc<span style="color:rgb(128,0,128)">:</span>gssrc0<span style="color:rgb(128,0,128)">:</span>
Failed to start
<span style="color:rgb(227,74,220)">ERROR:</span> pipeline doesn't want to preroll<span style="color:rgb(128,128,48)">.</span>
Failed to set pipeline to PAUSED<span style="color:rgb(128,128,48)">.</span>
Setting pipeline to <span style="color:rgb(125,0,69)">NULL</span> <span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">.</span>
Freeing pipeline <span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">.</span><span style="color:rgb(128,128,48)">.</span>
</pre></div><div><br></div><div><br></div><div>I am aware that the pipeline is not complete, but I get the same SegFault when running a whole pipeline. Anyone who sees what goes wrong?</div><div>By the way, if you see any mistakes/easy optimizations in the Docker Image, happy to hear them (haven't touched those in quite some time)!</div><div><br></div><div>Thanks again, really stoked to see this working!</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Op ma 26 jul. 2021 om 08:14 schreef Sebastian Dröge <<a href="mailto:sebastian@centricular.com">sebastian@centricular.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>On Mon, 2021-07-19 at 15:52 +0200, F Weers via gstreamer-devel wrote:</div><blockquote type="cite" style="margin:0px 0px 0px 0.8ex;border-left:2px solid rgb(114,159,207);padding-left:1ex"><div dir="ltr"><p dir="auto"></p><p dir="auto">I am running everything inside a Docker container and use <code>apt-get install libgstreamer1.0</code> to install the required packages. Since the above mentioned plugin is part of 1.19.1 (if I understand correctly), it is not included in the <code>gstreamer1.0-plugins-bad</code> package yet. What would be the easiest way to install this package and use it?</p><ol dir="auto"><li>Can I build this plugin on its own or should I build the whole <a href="https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/" target="_blank">https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/</a> repository? In that case, is gst-build the way to go (<a href="https://gitlab.freedesktop.org/gstreamer/gst-build/blob/master/README.md" target="_blank">https://gitlab.freedesktop.org/gstreamer/gst-build/blob/master/README.md</a>)?</li></ol></div></blockquote><div><br></div><div>gst-build would be a good way for building the latest git version of GStreamer. You generally need to build all the modules and not just a single plugin or module set.</div><div>It should however be possible to backport this specific plugin to an older version and then it should be possible to just compile that.</div><div><br></div><blockquote type="cite" style="margin:0px 0px 0px 0.8ex;border-left:2px solid rgb(114,159,207);padding-left:1ex"><div dir="ltr"><ol dir="auto"><li>If I'm building the plugin from source, should the version of GStreamer match this (and thus also be compiled from source to 1.19.1)? Or can I keep using the publicly available packages that refer to 1.18 (if I'm correctly)?</li></ol></div></blockquote><div><br></div><div>The build will simply fail otherwise.</div><div><br></div><blockquote type="cite" style="margin:0px 0px 0px 0.8ex;border-left:2px solid rgb(114,159,207);padding-left:1ex"><div dir="ltr"><ol dir="auto"><li>This is probably not the right place, but if I need to update all of these, do I also need to update the Rust bindings?</li></ol></div></blockquote><div><br></div><div>No, they will work with any GStreamer version >= 1.8. The only reason why you might want to update the bindings would be if there are newer features or bugfixes that you need.</div><div><br></div><div><span><pre>-- <br></pre><div style="width:71ch">Sebastian Dröge, Centricular Ltd · <a href="https://www.centricular.com" target="_blank">https://www.centricular.com</a></div></span></div></div>
</blockquote></div>