Quantcast

streaming mpeg-dash

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

streaming mpeg-dash

Alexander Yanin
Hi,

I want to use gstreamer for streaming media over mpeg-dash. As I understood, there is no available dashsink yet. In slomo's blog I have found a link to dashsink that is still in bugzilla. Can I use it for the streaming purpose already? Is there any articles or docs with instructions of how this sink could be used? How soon this plugin is expected to be merged to gst-plugins-bad? Can someone show an example pipeline with dashsink included? Any help on understanding how to work with this sink would be highly appreciated.

Best regards,
Alex

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

Re: streaming mpeg-dash

Dimitrios Katsaros
Currently the dashsink development is frozen since no one has the time to work on making a fully fledged solution. I was intending on working on it but there is a fair amount of work left to make it into a finalized element. Right now the element can only produce static streams and the pipeline is expected to have a muxer directly upstream that can handle converting the stream into a fragmented mp4 stream. If you want a functional version I suggest checking the links to the two git repos that Thiago Sousa Santos made with the dashsink. I have compiled them and they work pretty much out of the box. As for pipeline examples, the ones in that ticket that you linked were working for me so I would start with those.

dmt

On Mon, Apr 10, 2017 at 12:48 PM, Alexander Yanin <[hidden email]> wrote:
Hi,

I want to use gstreamer for streaming media over mpeg-dash. As I understood, there is no available dashsink yet. In slomo's blog I have found a link to dashsink that is still in bugzilla. Can I use it for the streaming purpose already? Is there any articles or docs with instructions of how this sink could be used? How soon this plugin is expected to be merged to gst-plugins-bad? Can someone show an example pipeline with dashsink included? Any help on understanding how to work with this sink would be highly appreciated.

Best regards,
Alex

_______________________________________________
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
|  
Report Content as Inappropriate

Re: streaming mpeg-dash

Alexander Yanin
In reply to this post by Alexander Yanin
I have compiled mp4dashmux and dashsink from Thiago Sousa Santos git repos and tried a pipeline with them like this:

gst-launch-1.0 videotestsrc is-live=true ! timeoverlay ! x264enc ! mp4dashmux fragment-method=1 ! dashsink is-live=true delete-old-files=true title="manifest"

This pipeline starts successfully, produces a manifest file and m4s fragments as expected. Then I have created a simple html with a video tag and linked dash js library to this html to play my dash stream. I have tried to open this html (served on http server) in Chrome, Firefox and Epiphany. Only Epiphany was able to play the stream. Firefox and Chrome gave similar error:
Firefox says: Cannot play media. No decoders for requested formats: application/dash+xml, video/mp4;codecs="undefined"
Chrome says: videoCodec (video/mp4;codecs="undefined") is not supported.
I hope that the problem is with codecs="undefined" property produced by dashsink. I think that this issue can be easily fixed if this is a reason.

However, I have another issue. My pipeline doesn't erase old files. Even if is set 'is-live' and 'delete-old-files' properties to true in dashsink, the number of fragments is constantly increasing. First file in playlist doesn't change from 'fragment_0' in my manifest file too. So, when I refresh my browser, I always have my stream played from the very beginning (it is easy to detect as i have timeoverlay plugin inserted into the pipeline). What am I doing wrong with this? Is deleting of old files works correctly in current version of dashsink?

2017-04-10 13:48 GMT+03:00 Alexander Yanin <[hidden email]>:
Hi,

I want to use gstreamer for streaming media over mpeg-dash. As I understood, there is no available dashsink yet. In slomo's blog I have found a link to dashsink that is still in bugzilla. Can I use it for the streaming purpose already? Is there any articles or docs with instructions of how this sink could be used? How soon this plugin is expected to be merged to gst-plugins-bad? Can someone show an example pipeline with dashsink included? Any help on understanding how to work with this sink would be highly appreciated.

Best regards,
Alex


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

Re: streaming mpeg-dash

Dimitrios Katsaros
The logic for the rolling window has not been implemented. So unfortunately those features will need to be implemented if you want to have something like that. For the Firefox/Chrome issue, as you noticed, they require that you define the type of codec to use. you need to add an additional field to the mpd file. What I am using is in gstreprisentation.c I have added:

if (rep->common.stream_type == STREAM_TYPE_VIDEO) {
    if (!gst_media_presentation_write_string_attribute (writer,
            "codecs", "avc1.640028"))
        return FALSE;
    } else if (rep->common.stream_type == STREAM_TYPE_AUDIO) {
        if (!gst_media_presentation_write_string_attribute (writer,
                "codecs", "mp4a.40.2"))
            return FALSE;
}

You may have to change the codecs based on what you are using.

Dimitrios

On Thu, May 18, 2017 at 10:50 PM, Alexander Yanin <[hidden email]> wrote:
I have compiled mp4dashmux and dashsink from Thiago Sousa Santos git repos and tried a pipeline with them like this:

gst-launch-1.0 videotestsrc is-live=true ! timeoverlay ! x264enc ! mp4dashmux fragment-method=1 ! dashsink is-live=true delete-old-files=true title="manifest"

This pipeline starts successfully, produces a manifest file and m4s fragments as expected. Then I have created a simple html with a video tag and linked dash js library to this html to play my dash stream. I have tried to open this html (served on http server) in Chrome, Firefox and Epiphany. Only Epiphany was able to play the stream. Firefox and Chrome gave similar error:
Firefox says: Cannot play media. No decoders for requested formats: application/dash+xml, video/mp4;codecs="undefined"
Chrome says: videoCodec (video/mp4;codecs="undefined") is not supported.
I hope that the problem is with codecs="undefined" property produced by dashsink. I think that this issue can be easily fixed if this is a reason.

However, I have another issue. My pipeline doesn't erase old files. Even if is set 'is-live' and 'delete-old-files' properties to true in dashsink, the number of fragments is constantly increasing. First file in playlist doesn't change from 'fragment_0' in my manifest file too. So, when I refresh my browser, I always have my stream played from the very beginning (it is easy to detect as i have timeoverlay plugin inserted into the pipeline). What am I doing wrong with this? Is deleting of old files works correctly in current version of dashsink?

2017-04-10 13:48 GMT+03:00 Alexander Yanin <[hidden email]>:
Hi,

I want to use gstreamer for streaming media over mpeg-dash. As I understood, there is no available dashsink yet. In slomo's blog I have found a link to dashsink that is still in bugzilla. Can I use it for the streaming purpose already? Is there any articles or docs with instructions of how this sink could be used? How soon this plugin is expected to be merged to gst-plugins-bad? Can someone show an example pipeline with dashsink included? Any help on understanding how to work with this sink would be highly appreciated.

Best regards,
Alex


_______________________________________________
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
Loading...