A few issues with gstreamer

Sebastian Dröge sebastian at centricular.com
Sat Dec 28 03:34:34 PST 2013


On Fr, 2013-12-27 at 23:30 +0000, Pedro Côrte-Real wrote:
> Thanks to everyone I've pestered the last two days on #gstreamer.
> Here's the current proof of concept code I've been working on:
> 
> https://github.com/pedrocr/camerasink
> 
> Gstreamer made this much much easier than I was expecting. While
> implementing this I've ran into a few issues that seem worth
> reporting.

First of all an addition to what I told you on IRC yesterday :) For h264
it's highly suboptimal to use AVI as a container format. Better use
something like MP4 or Matroska.

> 
> 1) Some PPA builds are broken
> 
> It seems the Ubuntu PPA doesn't have all the latest versions. Here's
> the result of trying to install gstreamer1.0 on Ubuntu 12.04 LTS:
> 
> $ dpkg -l | grep gstreamer1.0 | cut -d " " -f 1-30
> ii  gstreamer1.0-plugins-bad
> 1.0.5-1ubuntu1~ubuntu12.04.1~ppa1
> ii  gstreamer1.0-plugins-base
> 1.2.1-2ubuntu1~ubuntu12.04.1~gstdev1
> ii  gstreamer1.0-plugins-good
> 1.0.8-1ubuntu1~ubuntu12.04.1~ppa1
> ii  gstreamer1.0-plugins-ugly
> 1.2.1-1~ubuntu12.04.1~gstdev1
> ii  gstreamer1.0-tools                     1.2.1-1~ubuntu12.04.1~gstdev1
> ii  libgstreamer1.0-0                      1.2.1-1~ubuntu12.04.1~gstdev1
> ii  libgstreamer1.0-dev                    1.2.1-1~ubuntu12.04.1~gstdev
> 
> It seems plugins-bad and plugins-good are stuck at earlier versions.
> Looking at the build logs the bugs seems to be:
> 
> plugins-bad: Missing build dependencies: libplatform-api1-dev
> plugins-good: configure: Requested 'libpulse >= 2.0' but version of
> libpulse is 1.1

That's something you should report to the maintainers of this PPA. It's
probably easier if you just compile GStreamer yourself (also because of
gst-rtsp-server), it's very easy and you don't even have to override
your system GStreamer:
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/faq/html/chapter-developing.html#developing-uninstalled-gstreamer

You can install all the build dependencies with apt-get by doing
apt-get build-dep gstreamer1.0 gst-plugins-{base,good,bad,ugly}1.0

Alternatively update to a more up to date distribution.

> 2) gst-rtsp-server doesn't have a 1.0 release
> 
> The last release seems to have been 0.10.8 three years ago, but the
> git master has 1.2.0 code. it would be great to have a more modern
> release of this. Thankfully I only needed this as a test server so I
> just built that one against 0.10.

A release for 1.x is planned in the very near future. Until then you can
easily build from GIT.

Compared to the 0.10 version there were many API changes and lots of new
features.

> 3) Possible regression in 1.2 vs 0.10
> 
> This pipeline doesn't work:
> 
> $ gst-launch-1.0 -vvv rtspsrc location=rtsp://localhost:8554/test !
> rtph264depay ! h264parse ! matroskamux ! filesink location="test.mkv"
> 
> giving:
> ERROR: from element
> /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: Internal
> data flow error.
> 
> Replacing gst-launch-1.0 with gst-launch-0.10 makes it work fine. This
> is where I am currently stuck.

Works for me with 1.2.2 and latest GIT master. How did you set up the
server, what streams is it providing?

Can you get a debug log for this error? For such generic errors you
usually find the real reason why it fails in the debug logs a few lines
above the first occurrence of the error.

> Finally I have two questions about gstreamer usage:
> 
> 1) Is there any way to use uridecodebin without actually decoding the
> stream? I want to be able to pass a url to a HTTP or RTSP stream of
> mpeg4/mjpeg/h264 into the bin and get the bitstream without decoding
> so I can pass it on to a matroskamux.

Yes, check the autoplug-* signals on uridecodebin. You have full control
over the autoplugging done inside uridecodebin with this, and e.g. can
tell it to expose encoded h264 but decode AAC to raw audio. Or anything
else really :) Check playbin for an example usage of this API.

> 2) Failing that and for other situations is there any way to build a
> pipeline directly from a string like gst-launch does? For flexibility
> it would be nice to be able to specify the capture pipeline for my app
> as a string.

gst_parse_launch() and related API:
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstParse.html

-- 
Sebastian Dröge, Centricular Ltd - http://www.centricular.com
Expertise, Straight from the Source
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 966 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20131228/89de38fa/attachment.pgp>


More information about the gstreamer-devel mailing list