|
|
@@ -128,13 +128,8 @@ function HlsStreamReader(src, options) {
|
|
|
if (index.variant)
|
|
|
return self.end();
|
|
|
|
|
|
- if (!self.readState.currentSegment) {
|
|
|
- self.readState.currentSegment = index.getSegment(self.readState.currentSeq);
|
|
|
- if (self.readState.currentSegment)
|
|
|
- fetchfrom(self.readState.currentSegment);
|
|
|
- else if (index.ended)
|
|
|
- self.end();
|
|
|
- }
|
|
|
+ if (!self.readState.currentSegment)
|
|
|
+ checkcurrent();
|
|
|
}
|
|
|
|
|
|
if (!index.ended) {
|
|
|
@@ -147,6 +142,19 @@ function HlsStreamReader(src, options) {
|
|
|
}
|
|
|
updateindex();
|
|
|
|
|
|
+ function checkcurrent() {
|
|
|
+ self.readState.currentSegment = self.index.getSegment(self.readState.currentSeq);
|
|
|
+ if (self.readState.currentSegment)
|
|
|
+ fetchfrom(self.readState.currentSegment);
|
|
|
+ else if (self.index.ended)
|
|
|
+ self.end();
|
|
|
+ else if (!self.index.type && (self.index.lastSeqNo() < self.readState.currentSeq-1)) {
|
|
|
+ // handle live stream restart
|
|
|
+ self.readState.currentSeq = self.index.first_seq_no;
|
|
|
+ checkcurrent();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
function fetchfrom(segment) {
|
|
|
var segmentUrl = url.resolve(self.baseUrl, segment.uri)
|
|
|
|
|
|
@@ -163,11 +171,7 @@ function HlsStreamReader(src, options) {
|
|
|
|
|
|
function nextstream() {
|
|
|
self.readState.currentSeq++;
|
|
|
- self.readState.currentSegment = self.index.getSegment(self.readState.currentSeq);
|
|
|
- if (self.readState.currentSegment)
|
|
|
- fetchfrom(self.readState.currentSegment);
|
|
|
- else if (self.index.ended)
|
|
|
- self.end();
|
|
|
+ checkcurrent();
|
|
|
}
|
|
|
|
|
|
if (stream) {
|