github.com/qiniu/go-sdk/v7@v7.27.0/qvs/record.go (about) 1 package qvs 2 3 import ( 4 "context" 5 ) 6 7 // 启动按需录制 8 func (manager *Manager) StartRecord(nsId, streamId string) error { 9 return manager.client.CallWithJson(context.Background(), nil, "POST", manager.url("/namespaces/%s/streams/%s/record/start", nsId, streamId), nil, nil) 10 } 11 12 // 停止按需录制 13 func (manager *Manager) StopRecord(nsId, streamId string) error { 14 return manager.client.CallWithJson(context.Background(), nil, "POST", manager.url("/namespaces/%s/streams/%s/record/stop", nsId, streamId), nil, nil) 15 } 16 17 // 删除录制片段 18 func (manager *Manager) DeleteStreamRecordHistories(nsId, streamId string, files []string) error { 19 return manager.client.CallWithJson(context.Background(), nil, "DELETE", manager.url("/namespaces/%s/streams/%s/recordhistories", nsId, streamId), nil, M{"files": files}) 20 } 21 22 type SaveasArgs struct { 23 Fname string `json:"fname"` 24 Format string `json:"format"` 25 Start int `json:"start"` 26 End int `json:"end"` 27 DeleteTs bool `json:"deleteTs"` // sdk直接调用方式在不生成m3u8格式文件时是否删除对应的ts文件 28 Pipeline string `json:"pipeline"` 29 NotifyUrl string `json:"notifyUrl"` 30 DeleteAfterDays int `json:"deleteAfterDays"` 31 } 32 33 type SaveasReply struct { 34 Fname string `json:"fname"` 35 PersistenId string `json:"persistentId,omitempty"` 36 Bucket string `json:"bucket"` 37 Duration int `json:"duration"` // ms 38 } 39 40 // 录制视频片段合并 41 func (manager *Manager) RecordClipsSaveas(nsId, streamId string, arg *SaveasArgs) (*SaveasReply, error) { 42 var ret SaveasReply 43 err := manager.client.CallWithJson(context.Background(), &ret, "POST", manager.url("/namespaces/%s/streams/%s/saveas", nsId, streamId), nil, arg) 44 if err != nil { 45 return nil, err 46 } 47 return &ret, nil 48 } 49 50 // 录制回放 51 func (manager *Manager) RecordsPlayback(nsId, streamId string, start, end int) (string, error) { 52 ret := struct { 53 Url string `json:"url"` 54 }{} 55 err := manager.client.Call(context.Background(), &ret, "GET", manager.url("/namespaces/%s/streams/%s/records/playback.m3u8?start=%d&end=%d", nsId, streamId, start, end), nil) 56 if err != nil { 57 return "", err 58 } 59 return ret.Url, nil 60 }