Gapless playback

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Gapless playback

adeel
Hi

I am new to gstreamer. I am using the following pipeline (suggested by a friend) to run mpeg2 files on decklink card. The issue I am facing that I can't able to play gaplessly.  

gst-launch-1.0 uridecodebin uri=file://'/Users/administrator/Desktop/MAC_APPS/senate.mov' name=decoder decoder. ! tee name=t t. ! queue ! autovideoconvert ! deinterlace method=greedyh ! videoscale ! interlace field-pattern=2:2 top-field-first=TRUE ! decklinkvideosink mode=3 decoder. ! audioconvert ! decklinkaudiosink t. ! queue ! autovideosink

Can anyone help me to convert this to playbin as I researched that gapless playback is possible with playbin using about to finish call back

Thanking you in anticipation

Regards
Adeel Arshad

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

Arun Raghavan-4


On Sun, 24 Jul 2016, at 10:34 AM, Adeel Arshad wrote:

> Hi
>
> I am new to gstreamer. I am using the following pipeline (suggested by a
> friend) to run mpeg2 files on decklink card. The issue I am facing that I
> can't able to play gaplessly.
>
> gst-launch-1.0 uridecodebin
> uri=file://'/Users/administrator/Desktop/MAC_APPS/senate.mov'
> name=decoder
> decoder. ! tee name=t t. ! queue ! autovideoconvert ! deinterlace
> method=greedyh ! videoscale ! interlace field-pattern=2:2
> top-field-first=TRUE ! decklinkvideosink mode=3 decoder. ! audioconvert !
> decklinkaudiosink t. ! queue ! autovideosink

That should pretty much translate to:

playbin uri=... video-sink='decklinkvideosink mode=3'
audio-sink='decklinkaudiosink' video-filter='whatever you actually need'

-- Arun
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

adeel
Hi Arun,

Thanks for your reply. I tried the pipeline you suggested and use the filter mpeg2dec as the application I am developing mostly use mpeg2 or which filter I can use which handle most of the video formats.

I am getting following error when running the pipeline.
failed to configure the video sink.

Secondly, How can I use multiple video sink. Is the following syntax correct

video-sink = 'autovideosink ! decklinkvideosink mode=3'

Thanking you in anticipation

Regards
Adeel Arshad
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

Arun Raghavan-4


On Mon, 25 Jul 2016, at 10:29 AM, adeel wrote:
> Hi Arun,
>
> Thanks for your reply. I tried the pipeline you suggested and use the
> filter
> mpeg2dec as the application I am developing mostly use mpeg2 or which
> filter
> I can use which handle most of the video formats.

playbin, will use uridecodebin under the hood and plug in a decoder. The
filter part was for the interlacing bits that you had in the pipeline
you posted.

> I am getting following error when running the pipeline.
> failed to configure the video sink.
>
> Secondly, How can I use multiple video sink. Is the following syntax
> correct
>
> video-sink = 'autovideosink ! decklinkvideosink mode=3'

What do you want it to do there? playbin takes a single video-sink
property, but if you want to push the same video to two sinks, you could
provide it a bin with a tee connected to the various sinks.

-- Arun
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

adeel
Hi Arun

I want multiple sink because I want to playback a video using decklink card and also display it locally.

Regards
Adeel Arshad

On Mon, Jul 25, 2016 at 11:34 AM, Arun Raghavan <[hidden email]> wrote:


On Mon, 25 Jul 2016, at 10:29 AM, adeel wrote:
> Hi Arun,
>
> Thanks for your reply. I tried the pipeline you suggested and use the
> filter
> mpeg2dec as the application I am developing mostly use mpeg2 or which
> filter
> I can use which handle most of the video formats.

playbin, will use uridecodebin under the hood and plug in a decoder. The
filter part was for the interlacing bits that you had in the pipeline
you posted.

> I am getting following error when running the pipeline.
> failed to configure the video sink.
>
> Secondly, How can I use multiple video sink. Is the following syntax
> correct
>
> video-sink = 'autovideosink ! decklinkvideosink mode=3'

What do you want it to do there? playbin takes a single video-sink
property, but if you want to push the same video to two sinks, you could
provide it a bin with a tee connected to the various sinks.

-- Arun
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

Arun Raghavan-4
On Mon, 25 Jul 2016, at 12:16 PM, Adeel Arshad wrote:
> Hi Arun
>
> I want multiple sink because I want to playback a video using decklink
> card
> and also display it locally.

To do this on the command line, you would set the property on playbin
with something like:

  video-sink='tee name=t t. ! queue ! autovideosink t. ! queue !
  decklinkvideosink'

In code, you would create a bin with the tee, queues and sinks, and set
that on the 'video-sink' property of playbin.

-- Arun
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

Digits
In reply to this post by adeel
Hi Adeel,

I've put together a quick and dirty example of gapless playback using playbin (modified basic-tutorial-5).  It does not render to the Decklink card, I don't have time to implement that, but it plays 5 files seamlessly.

Regards,

Dave.


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

adeel8.c (23K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

adeel
In reply to this post by Arun Raghavan-4
Hi Arun

My pipeline is as follow. I am using the same to playback files and its working fine.

pipeline = gst_parse_launch("playbin uri=file:///Users/administrator/Desktop/MAC_APPS/senate.mov video-sink = 'tee name=t t. ! queue ! autovideosink t. ! decklinkvideosink mode=3' audio-sink='decklinkaudiosink' video-filter = 'deinterlace method=greedyh ! interlace field-pattern = 2:2 top-field-first = TRUE'", &error);

The problem I am facing is with gapless playback. The gapless playback is working fine when the video-sink is set to autovideosink only and no deinterlacing is used but when I added decklinkvideosink and deinterlacing it play the one file perfectly and when try to play the next file it halts on last frame of the previous video but track bar showing that the video is playing. What should I do

Thanking you in anticipation 

Regards
Adeel Arshad

On Monday, July 25, 2016, Arun Raghavan <[hidden email]> wrote:
On Mon, 25 Jul 2016, at 12:16 PM, Adeel Arshad wrote:
> Hi Arun
>
> I want multiple sink because I want to playback a video using decklink
> card
> and also display it locally.

To do this on the command line, you would set the property on playbin
with something like:

  video-sink='tee name=t t. ! queue ! autovideosink t. ! queue !
  decklinkvideosink'

In code, you would create a bin with the tee, queues and sinks, and set
that on the 'video-sink' property of playbin.

-- Arun
_______________________________________________
gstreamer-devel mailing list
<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;gstreamer-devel@lists.freedesktop.org&#39;)">gstreamer-devel@...
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

Arun Raghavan-4


On Fri, 29 Jul 2016, at 01:03 AM, Adeel Arshad wrote:

> Hi Arun
>
> My pipeline is as follow. I am using the same to playback files and its
> working fine.
>
> pipeline = gst_parse_launch("playbin uri=file:///Users/
> administrator/Desktop/MAC_APPS/senate.mov video-sink = 'tee name=t t. !
> queue ! autovideosink t. ! decklinkvideosink mode=3'
> audio-sink='decklinkaudiosink' video-filter = 'deinterlace method=greedyh
> !
> interlace field-pattern = 2:2 top-field-first = TRUE'", &error);
>
> The problem I am facing is with gapless playback. The gapless playback is
> working fine when the video-sink is set to autovideosink only and no
> deinterlacing is used but when I added decklinkvideosink and
> deinterlacing
> it play the one file perfectly and when try to play the next file it
> halts
> on last frame of the previous video but track bar showing that the video
> is
> playing. What should I do
>
> Thanking you in anticipation

Does it work if you have only the decklinkvideosink as your sink? If
yes, then try adding deinterlacing (but not autovideosink). You first
want to find the minimal pipeline that causes things to not work.

-- Arun
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

adeel
Hi Arun

No, It didn't work with decklinkvideosink only if interlacing is not used. It gives mpegpsdemux error for mpeg files and qtdemux error if mov file is used. If we use interlacing in video filter. The first file plays perfectly but when second file is played it struck on first frame till the end of file.

This is my pipeline code

data.vs = gst_element_factory_make("decklinkvideosink","data.vs");
g_object_set(data.vs,"mode",(gint) 3,NULL);

data.vbin = gst_parse_bin_from_description("queue ! interlace field-pattern=1:1 top-field-first=true ! videorate ! capsfilter caps=\"video/x-raw,framerate=25/1\"",TRUE,NULL);
data.abin = gst_parse_bin_from_description("audioconvert ! decklinkaudiosink",TRUE,NULL); 

data.pipeline = gst_parse_launch("playbin uri=file:///Storage/Tests/KURLEEZ.mpg",NULL);

g_object_set(data.pipeline,"video-sink",data.vs,NULL); g_object_set(data.pipeline,"video-filter",data.vbin,NULL); g_object_set(data.pipeline,"audio-sink",data.abin,NULL);

Regards
Adeel Arshad

On Thu, Aug 4, 2016 at 8:35 AM, Arun Raghavan <[hidden email]> wrote:


On Fri, 29 Jul 2016, at 01:03 AM, Adeel Arshad wrote:
> Hi Arun
>
> My pipeline is as follow. I am using the same to playback files and its
> working fine.
>
> pipeline = gst_parse_launch("playbin uri=file:///Users/
> administrator/Desktop/MAC_APPS/senate.mov video-sink = 'tee name=t t. !
> queue ! autovideosink t. ! decklinkvideosink mode=3'
> audio-sink='decklinkaudiosink' video-filter = 'deinterlace method=greedyh
> !
> interlace field-pattern = 2:2 top-field-first = TRUE'", &error);
>
> The problem I am facing is with gapless playback. The gapless playback is
> working fine when the video-sink is set to autovideosink only and no
> deinterlacing is used but when I added decklinkvideosink and
> deinterlacing
> it play the one file perfectly and when try to play the next file it
> halts
> on last frame of the previous video but track bar showing that the video
> is
> playing. What should I do
>
> Thanking you in anticipation

Does it work if you have only the decklinkvideosink as your sink? If
yes, then try adding deinterlacing (but not autovideosink). You first
want to find the minimal pipeline that causes things to not work.

-- Arun
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

Arun Raghavan-4


On Thu, 4 Aug 2016, at 10:27 AM, Adeel Arshad wrote:

> Hi Arun
>
> No, It didn't work with decklinkvideosink only if interlacing is not
> used.
> It gives mpegpsdemux error for mpeg files and qtdemux error if mov file
> is
> used. If we use interlacing in video filter. The first file plays
> perfectly
> but when second file is played it struck on first frame till the end of
> file.
>
> This is my pipeline code
>
> data.vs = gst_element_factory_make("decklinkvideosink","data.vs");
> g_object_set(data.vs,"mode",(gint) 3,NULL);
>
> data.vbin = gst_parse_bin_from_description("queue ! interlace
> field-pattern=1:1 top-field-first=true ! videorate ! capsfilter
> caps=\"video/x-raw,framerate=25/1\"",TRUE,NULL);
> data.abin = gst_parse_bin_from_description("audioconvert !
> decklinkaudiosink",TRUE,NULL);
>
> data.pipeline = gst_parse_launch("playbin
> uri=file:///Storage/Tests/KURLEEZ.mpg",NULL);
> g_object_set(data.pipeline,"video-sink",data.vs,NULL);
> g_object_set(data.pipeline,"video-filter",data.vbin,NULL);
> g_object_set(data.pipeline,"audio-sink",data.abin,NULL);

At this point, I suspect someone with the hardware would need to try
things out and figure out why this is happening.

Regards,
Arun
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Gapless playback

Andres Gonzalez
In reply to this post by adeel
Hi,
I think your pipeline is not consistent. For decklinkvideosink, mode 3 is "PAL SD 50i"  which is a framerate of 50fps.  Your capsfilter is specified as 25fps.

-Andres