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  }