|
|
|
@ -72,8 +72,8 @@ func (p *muxerStreamPlaylist) reader() io.Reader { |
|
|
|
ret := uint(0) |
|
|
|
ret := uint(0) |
|
|
|
|
|
|
|
|
|
|
|
// EXTINF, when rounded to the nearest integer, must be <= EXT-X-TARGETDURATION
|
|
|
|
// EXTINF, when rounded to the nearest integer, must be <= EXT-X-TARGETDURATION
|
|
|
|
for _, f := range p.segments { |
|
|
|
for _, s := range p.segments { |
|
|
|
v2 := uint(math.Round(f.duration().Seconds())) |
|
|
|
v2 := uint(math.Round(s.duration().Seconds())) |
|
|
|
if v2 > ret { |
|
|
|
if v2 > ret { |
|
|
|
ret = v2 |
|
|
|
ret = v2 |
|
|
|
} |
|
|
|
} |
|
|
|
@ -84,10 +84,12 @@ func (p *muxerStreamPlaylist) reader() io.Reader { |
|
|
|
cnt += "#EXT-X-TARGETDURATION:" + strconv.FormatUint(uint64(targetDuration), 10) + "\n" |
|
|
|
cnt += "#EXT-X-TARGETDURATION:" + strconv.FormatUint(uint64(targetDuration), 10) + "\n" |
|
|
|
|
|
|
|
|
|
|
|
cnt += "#EXT-X-MEDIA-SEQUENCE:" + strconv.FormatInt(int64(p.segmentDeleteCount), 10) + "\n" |
|
|
|
cnt += "#EXT-X-MEDIA-SEQUENCE:" + strconv.FormatInt(int64(p.segmentDeleteCount), 10) + "\n" |
|
|
|
|
|
|
|
cnt += "\n" |
|
|
|
|
|
|
|
|
|
|
|
for _, f := range p.segments { |
|
|
|
for _, s := range p.segments { |
|
|
|
cnt += "#EXTINF:" + strconv.FormatFloat(f.duration().Seconds(), 'f', -1, 64) + ",\n" |
|
|
|
cnt += "#EXT-X-PROGRAM-DATE-TIME:" + s.startTime.Format("2006-01-02T15:04:05+07:00") + "\n" + |
|
|
|
cnt += f.name + ".ts\n" |
|
|
|
"#EXTINF:" + strconv.FormatFloat(s.duration().Seconds(), 'f', -1, 64) + ",\n" + |
|
|
|
|
|
|
|
s.name + ".ts\n" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return []byte(cnt) |
|
|
|
return []byte(cnt) |
|
|
|
|