Question

I'm folowing Apple's proposal in http://tools.ietf.org/html/draft-pantos-http-live-streaming-01. Trying a dummy HTTP Live Streaming to my iphone, I wrote a webservice with Django corresponding to a .m3u8 file. I'm begining the response with

#EXTM3U
#EXT-X-TARGETDURATION:#10
#EXT-X-MEDIA-SEQUENCE:#0

I then write the URLs of the segments (6 segments of 10 seconds each )inside the response:

#EXTINF:10,
http://...../sample_low-1.ts
...

and that's all. I change the part containing URLs of segments every minute, so in theory I'm expecting a continuous live stream.

However, when I check the stream with my iphone I observe the following:

The phone connects to ...m3u8 , gets its contents, starts downloading .ts files and starts showing the video. Then, after downloading 6th segment(last segment in the .m3u8) it reaches end of file, sees no

EXT-X-ENDLIST

and searches for the new .m3u8. The new .m3u8 is ready at the server at this point, as I renew the contents of .m3u8 every 60 seconds.

However, the phone pauses, and I cannot achieve a continuous stream on the phone.

So, obviously I make a huge mistake somewhere. Any helps and suggestions are very welcome.

Edit : Turns out that incrementing media sequence works.

Was it helpful?

Solution

How do you send the response back?
If you return the Django response object, then the server is simply sending a response with the six segments, and then will sit quietly, waiting for a new request from the client.
If you want to continuously send data from the server, you should instead yield the result, and use some kind of synchronization, so that you are sure you are not sending the same data over and over again.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top