Search code examples
iphonestreamingvideo-streaminghttp-live-streaming

Precise scrubbing with HTTP Live Streaming


I'm using HTTP Streaming for my iPhone app (as required by Apple). However, video scrubbing is noticeably imprecise. Whenever I seek to a time in the video, it jumps to the start time of the nearest segment. This occurs with both MPMoviePlayerController and AVPlayer (using seekToTime: with a tolerance of 0).

Have others encountered this issue as well? Did anyone find a way to get precise scrubbing with HTTP Live Streaming? I'm willing to go low-level if necessary. The Youtube app has precise scrubbing but I don't believe it uses HTTP Live Streaming. Can anyone confirm/deny?

Update: I'm using mediafilesegmenter with the default settings (10 sec / chunk). My master .m3u8 looks like

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=957267
http://[...].m3u8?file_urlkey=[...]
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=258157
http://[...].m3u8?file_urlkey=[...]
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=53220
http://[...].m3u8?file_urlkey=[...]

The individual .m3u8s look like

#EXTM3U
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:10
#EXTINF:9.9988149305,
http://[...].ts?bytes=0-1195491
#EXTINF:9.9988149305,
http://[...].ts?bytes=1195492-2390983
#EXTINF:9.9988149305,
http://[...].ts?bytes=2390984-3586475
#EXTINF:9.9988149305,
http://[...].ts?bytes=3586476-4781967
#EXTINF:9.9988149305,
http://[...].ts?bytes=4781968-5977459
#EXTINF:0.345925347493,
http://[...].ts?bytes=5977460-6018819
#EXT-X-ENDLIST

Thanks!


Solution

  • Seeking in the middle of segments is not possible with HTTP Live Streaming -- I confirmed with an Apple rep at WWDC.

    But they said that seeking precision will be improved in iOS5.