Video corruption in rtsp server with appsink->appsrc

Serj TorresSoldado torres.soldado at gmail.com
Tue Mar 29 17:06:13 UTC 2016


Can't stop and start the appsink;s pipeline.. anyway if I do the PTS thing
it works.

Trying the gst-rtsp-server examples ("test-video") with vlc as a client and
the corruption issue exists even on gstreamer 1.8.

I am able to get a corruption free playback if I use gstreamer rtpsrc based
client.

My only idea at the moment it to capture and drop the event segment and see
if it does anything.


On 29 March 2016 at 11:29, Thornton, Keith <keith.thornton at zeiss.com> wrote:

> Hi
>
> I have a similar pipeline based on the rtsp appsrc example. I use the
> client_connected and client_closed callbacks to start and stop my pipeline.
> I can attach and detach clients more than once.
>
>
>
> *Von:* gstreamer-devel [mailto:
> gstreamer-devel-bounces at lists.freedesktop.org] *Im Auftrag von *Serj
> TorresSoldado
> *Gesendet:* Dienstag, 29. März 2016 11:34
> *An:* Discussion of the development of and with GStreamer
> *Betreff:* Re: Video corruption in rtsp server with appsink->appsrc
>
>
>
> I have just noticed this happens with the gst-rtsp-server examples as well.
>
>
>
> I am using the 1.6 branch.
>
>
>
> On 28 March 2016 at 21:50, Serj TorresSoldado <torres.soldado at gmail.com>
> wrote:
>
> Hi All,
>
>
>
>  I am doing a sink -> src push. The sink is in a separate pipeline and the
> src is created by gst-rtsp-server when creating the media pipeline.
>
>
>
>  I have tried both using a pull (need-data signal) and push (new-sample)
> methods and the result is the same.
>
>
>
>  I am copying the buffer from the sink to the source. I am setting the PTS
> on the copied buffer otherwise after the first client disconnects I am
> unable to connect again.
>
>
>
>  GST_BUFFER_PTS(bufcpy) = client->timestamp_;
>
>  client->timestamp_ += GST_BUFFER_DURATION(bufcpy);
>
>  gst_app_src_push_buffer(client->appsrc_, bufcpy);
>
>
>
>  When cofiguring the client I have "played" with the following appsrc
> properties but they don't seem to make a difference:
>
>
>
>   gst_util_set_object_arg(reinterpret_cast<GObject*>(appsrc.Get()),
> "format", "time");
>
>   g_object_set(reinterpret_cast<GObject*>(appsrc.Get()), "block", false,
> nullptr);
>
>   g_object_set(reinterpret_cast<GObject*>(appsrc.Get()), "is-live", true,
> nullptr);
>
>   g_object_set(reinterpret_cast<GObject*>(appsrc.Get()), "do-timestamp",
> true, nullptr);
>
> //  g_object_set(reinterpret_cast<GObject*>(appsrc.Get()), "stream-type",
> "random-access", nullptr);
>
> //  g_object_set(reinterpret_cast<GObject*>(appsrc.Get()), "max-bytes",
> 1000, nullptr);
>
>
>
> Any help would be awesome, thanks.
>
>
>
> Serj
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20160329/0569c905/attachment.html>


More information about the gstreamer-devel mailing list