切片将从大于`{起始时间}`的关键帧开始,`{片段时长}`之后的关键帧结束,故大多数情况不能获得精确时间的切片视频
+切片不会进行渲染,仅参考文件中的时间戳进行切片
+
其中`dur`为空时,将返回全部时长。`st`参数可以为空或不传,此时从录播文件起始点开始。
`{起始时间}`、`{片段时长}`格式使用[time.ParseDuration](https://pkg.go.dev/time#ParseDuration)进行转换。例:`1m`为1分钟、`1h2m`为1小时2分。
if duration != 0 {
if strings.HasSuffix(v, "flv") {
- w.Header().Set("Content-Disposition", fmt.Sprintf("inline; filename=\"%s.%d.mp4\"", qref, time.Now().Unix()))
+ w.Header().Set("Content-Disposition", fmt.Sprintf("inline; filename=\"%s.%d.flv\"", qref, time.Now().Unix()))
if e := NewFlvDecoder().Cut(f, startT, duration, w); e != nil && !errors.Is(e, io.EOF) {
flog.L(`E: `, e)
}
}
if strings.HasSuffix(v, "mp4") {
- w.Header().Set("Content-Disposition", fmt.Sprintf("inline; filename=\"%s.%d.flv\"", qref, time.Now().Unix()))
+ w.Header().Set("Content-Disposition", fmt.Sprintf("inline; filename=\"%s.%d.mp4\"", qref, time.Now().Unix()))
if e := NewFmp4Decoder().Cut(f, startT, duration, w); e != nil && !errors.Is(e, io.EOF) {
flog.L(`E: `, e)
}