[gst-devel] Implementing support for Apple HTTP Live Streaming...

Bastien Nocera hadess at hadess.net
Fri Jun 11 12:55:39 CEST 2010

On Wed, 2010-06-09 at 16:13 -0600, Stephen Buck wrote:
> I have looked at Marc-André's python player that uses GStreamer for
> this protocol at http://gitorious.net/hls-player and it's great for
> understanding the protocol. I just need to turn this into a GStreamer
> plugin that plays well with playbin so that arbitrary players can make
> use of it.

I understand that. And I'd be happy if it worked out-of-the-box in

> It sounds like I should be a source since I can easily implement a URI
> property and use libsoup to do all of my HTTP work. This works well
> when the pipeline can be defined manually. Unfortunately, playbin uses
> souphttpsrc for all HTTP URIs. If I add an optional m3u8 sink pad and
> act like a decoder so that playbin will connect souphttpsrc to my
> source is there any way I could just ignore the incoming content but
> use its URI to initialize my URI? Definitely a hack, but it might give
> me compatibility with playbin.

My idea was:
- Add typefinder for the special m3u8 format used
- Create element that takes in the m3u8 file and either:
  - redirect
  - do the streaming itself


-----------    -----------------
| httpsrc | -> |    GstBin     |
-----------    |               |
  Set with     | ------------  |
  m3u8 URL     | | httpsrc  |  |
                ^ httpsrc would do
                  the actual streaming of ts videos

Might also be possible to implement this as 2 plugins. One demuxer to
handle the m3u8 format and either redirect (as seen in the bug[1]), or
redirect to a fake URI (as Mike mentioned) that would hide a httpsrc
within itself and hide things like content size (but show duration, as
it would be known from the playlist).


[1]: https://bugzilla.gnome.org/show_bug.cgi?id=594035

More information about the gstreamer-devel mailing list