You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-library/vendor/github.com/tencentyun/cos-go-sdk-v5/ci_media.go

2732 lines
99 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package cos
import (
"context"
"encoding/xml"
"errors"
"fmt"
"net/http"
"strings"
"github.com/clbanning/mxj"
"github.com/mitchellh/mapstructure"
)
// JobInput TODO
type JobInput struct {
Object string `xml:"Object,omitempty"`
Lang string `xml:"Lang,omitempty"`
Type string `xml:"Type,omitempty"`
BasicType string `xml:"BasicType,omitempty"`
}
// StreamExtract TODO
type StreamExtract struct {
Index string `xml:"Index,omitempty"`
Object string `xml:"Object,omitempty"`
}
// JobOutput TODO
type JobOutput struct {
Region string `xml:"Region,omitempty"`
Bucket string `xml:"Bucket,omitempty"`
Object string `xml:"Object,omitempty"`
SpriteObject string `xml:"SpriteObject,omitempty"`
AuObject string `xml:"AuObject,omitempty"`
StreamExtract []StreamExtract `xml:"StreamExtract,omitempty"`
}
// ClipConfig TODO
type ClipConfig struct {
Duration string `xml:"Duration"`
}
// Container TODO
type Container struct {
Format string `xml:"Format,omitempty"`
ClipConfig *ClipConfig `xml:"ClipConfig,omitempty"`
}
// Video TODO
type Video struct {
Codec string `xml:"Codec"`
Width string `xml:"Width,omitempty"`
Height string `xml:"Height,omitempty"`
Fps string `xml:"Fps,omitempty"`
Remove string `xml:"Remove,omitempty"`
Profile string `xml:"Profile,omitempty"`
Bitrate string `xml:"Bitrate,omitempty"`
Crf string `xml:"Crf,omitempty"`
Gop string `xml:"Gop,omitempty"`
Preset string `xml:"Preset,omitempty"`
Bufsize string `xml:"Bufsize,omitempty"`
Maxrate string `xml:"Maxrate,omitempty"`
HlsTsTime string `xml:"HlsTsTime,omitempty"`
DashSegment string `xml:"DashSegment,omitempty"`
Pixfmt string `xml:"Pixfmt,omitempty"`
LongShortMode string `xml:"LongShortMode,omitempty"`
Rotate string `xml:"Rotate,omitempty"`
AnimateOnlyKeepKeyFrame string `xml:"AnimateOnlyKeepKeyFrame"`
AnimateTimeIntervalOfFrame string `xml:"AnimateTimeIntervalOfFrame"`
AnimateFramesPerSecond string `xml:"AnimateFramesPerSecond"`
Quality string `xml:"Quality"`
}
// TranscodeProVideo TODO
type TranscodeProVideo struct {
Codec string `xml:"Codec,omitempty"`
Profile string `xml:"Profile,omitempty"`
Width string `xml:"Width,omitempty"`
Height string `xml:"Height,omitempty"`
Interlaced string `xml:"Interlaced,omitempty"`
Fps string `xml:"Fps,omitempty"`
Bitrate string `xml:"Bitrate,omitempty"`
Rotate string `xml:"Rotate,omitempty"`
}
// TimeInterval TODO
type TimeInterval struct {
Start string `xml:"Start,omitempty"`
Duration string `xml:"Duration,omitempty"`
}
// Audio TODO
type Audio struct {
Codec string `xml:"Codec,omitempty"`
Samplerate string `xml:"Samplerate,omitempty"`
Bitrate string `xml:"Bitrate,omitempty"`
Channels string `xml:"Channels,omitempty"`
Remove string `xml:"Remove,omitempty"`
KeepTwoTracks string `xml:"KeepTwoTracks,omitempty"`
SwitchTrack string `xml:"SwitchTrack,omitempty"`
SampleFormat string `xml:"SampleFormat,omitempty"`
}
// TranscodeProAudio TODO
type TranscodeProAudio struct {
Codec string `xml:"Codec,omitempty"`
Remove string `xml:"Remove,omitempty"`
}
// TransConfig TODO
type TransConfig struct {
AdjDarMethod string `xml:"AdjDarMethod,omitempty"`
IsCheckReso string `xml:"IsCheckReso,omitempty"`
ResoAdjMethod string `xml:"ResoAdjMethod,omitempty"`
IsCheckVideoBitrate string `xml:"IsCheckVideoBitrate,omitempty"`
VideoBitrateAdjMethod string `xml:"VideoBitrateAdjMethod,omitempty"`
IsCheckAudioBitrate string `xml:"IsCheckAudioBitrate,omitempty"`
AudioBitrateAdjMethod string `xml:"AudioBitrateAdjMethod,omitempty"`
DeleteMetadata string `xml:"DeleteMetadata,omitempty"`
IsHdr2Sdr string `xml:"IsHdr2Sdr,omitempty"`
HlsEncrypt *HlsEncrypt `xml:"HlsEncrypt,omitempty"`
}
// Transcode TODO
type Transcode struct {
Container *Container `xml:"Container,omitempty"`
Video *Video `xml:"Video,omitempty"`
TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"`
Audio *Audio `xml:"Audio,omitempty"`
TransConfig *TransConfig `xml:"TransConfig,omitempty"`
AudioMix *AudioMix `xml:"AudioMix,omitempty"`
}
// Image TODO
type Image struct {
Url string `xml:"Url,omitempty"`
Mode string `xml:"Mode,omitempty"`
Width string `xml:"Width,omitempty"`
Height string `xml:"Height,omitempty"`
Transparency string `xml:"Transparency,omitempty"`
Background string `xml:"Background,omitempty"`
}
// Text TODO
type Text struct {
FontSize string `xml:"FontSize,omitempty"`
FontType string `xml:"FontType,omitempty"`
FontColor string `xml:"FontColor,omitempty"`
Transparency string `xml:"Transparency,omitempty"`
Text string `xml:"Text,omitempty"`
}
// TtsTpl TODO
type TtsTpl struct {
Mode string `xml:"Mode,omitempty"`
Codec string `xml:"Codec,omitempty"`
VoiceType string `xml:"VoiceType,omitempty"`
Volume string `xml:"Volume,omitempty"`
Speed string `xml:"Speed,omitempty"`
}
// TtsConfig TODO
type TtsConfig struct {
Input string `xml:"Input,omitempty"`
InputType string `xml:"InputType,omitempty"`
}
// Translation TODO
type Translation struct {
Lang string `xml:"Lang,omitempty"`
Type string `xml:"Type,omitempty"`
}
// WordsGeneralize TODO
type WordsGeneralize struct {
NerMethod string `xml:"NerMethod,omitempty"`
SegMethod string `xml:"SegMethod,omitempty"`
}
// WordsGeneralizeResult TODO
type WordsGeneralizeResult struct {
WordsGeneralizeLable []WordsGeneralizeResulteLable `xml:"WordsGeneralizeLable,omitempty"`
WordsGeneralizeToken []WordsGeneralizeResulteToken `xml:"WordsGeneralizeToken,omitempty"`
}
// WordsGeneralizeResulteLable TODO
type WordsGeneralizeResulteLable struct {
Category string `xml:"Category,omitempty"`
Word string `xml:"Word,omitempty"`
}
// WordsGeneralizeResulteToken TODO
type WordsGeneralizeResulteToken struct {
Length string `xml:"Length,omitempty"`
Offset string `xml:"Offset,omitempty"`
Pos string `xml:"Pos,omitempty"`
Word string `xml:"Word,omitempty"`
}
// Watermark TODO
type Watermark struct {
Type string `xml:"Type,omitempty"`
Pos string `xml:"Pos,omitempty"` // TopLeft左上; Top上居中; TopRight右上; Left左居中; Center正中心; Right右居中; BottomLeft左下; Bottom下居中; BottomRight右下
LocMode string `xml:"LocMode,omitempty"`
Dx string `xml:"Dx,omitempty"`
Dy string `xml:"Dy,omitempty"`
StartTime string `xml:"StartTime,omitempty"`
EndTime string `xml:"EndTime,omitempty"`
Image *Image `xml:"Image,omitempty"`
Text *Text `xml:"Text,omitempty"`
}
// EffectConfig TODO
type EffectConfig struct {
EnableStartFadein string `xml:"EnableStartFadein,omitempty"`
StartFadeinTime string `xml:"StartFadeinTime,omitempty"`
EnableEndFadeout string `xml:"EnableEndFadeout,omitempty"`
EndFadeoutTime string `xml:"EndFadeoutTime,omitempty"`
EnableBgmFade string `xml:"EnableBgmFade,omitempty"`
BgmFadeTime string `xml:"BgmFadeTime,omitempty"`
}
// AudioMix TODO
type AudioMix struct {
AudioSource string `xml:"AudioSource,omitempty"`
MixMode string `xml:"MixMode,omitempty"`
Replace string `xml:"Replace,omitempty"`
EffectConfig *EffectConfig `xml:"EffectConfig,omitempty"`
}
// ConcatFragment TODO
type ConcatFragment struct {
Url string `xml:"Url,omitempty"`
Mode string `xml:"Mode,omitempty"`
StartTime string `xml:"StartTime,omitempty"`
EndTime string `xml:"EndTime,omitempty"`
FragmentIndex string `xml:"FragmentIndex,omitempty"`
}
// ConcatTemplate TODO
type ConcatTemplate struct {
ConcatFragment []ConcatFragment `xml:"ConcatFragment,omitempty"`
Audio *Audio `xml:"Audio,omitempty"`
Video *Video `xml:"Video,omitempty"`
Container *Container `xml:"Container,omitempty"`
Index string `xml:"Index,omitempty"`
AudioMix *AudioMix `xml:"AudioMix,omitempty"`
}
// SpriteSnapshotConfig TODO
type SpriteSnapshotConfig struct {
CellHeight string `xml:"CellHeight,omitempty"`
CellWidth string `xml:"CellWidth,omitempty"`
Color string `xml:"Color,omitempty"`
Columns string `xml:"Columns,omitempty"`
Lines string `xml:"Lines,omitempty"`
Margin string `xml:"Margin,omitempty"`
Padding string `xml:"Padding,omitempty"`
}
// Snapshot TODO
type Snapshot struct {
Mode string `xml:"Mode,omitempty"`
Start string `xml:"Start,omitempty"`
TimeInterval string `xml:"TimeInterval,omitempty"`
Count string `xml:"Count,omitempty"`
Width string `xml:"Width,omitempty"`
Height string `xml:"Height,omitempty"`
CIParam string `xml:"CIParam,omitempty"`
IsCheckCount bool `xml:"IsCheckCount,omitempty"`
IsCheckBlack bool `xml:"IsCheckBlack,omitempty"`
BlackLevel string `xml:"BlackLevel,omitempty"`
PixelBlackThreshold string `xml:"PixelBlackThreshold,omitempty"`
SnapshotOutMode string `xml:"SnapshotOutMode,omitempty"`
SpriteSnapshotConfig *SpriteSnapshotConfig `xml:"SpriteSnapshotConfig,omitempty"`
}
// AnimationVideo TODO
// 有意和转码区分,两种任务关注的参数不一样避免干扰
type AnimationVideo struct {
Codec string `xml:"Codec"`
Width string `xml:"Width"`
Height string `xml:"Height"`
Fps string `xml:"Fps"`
AnimateOnlyKeepKeyFrame string `xml:"AnimateOnlyKeepKeyFrame"`
AnimateTimeIntervalOfFrame string `xml:"AnimateTimeIntervalOfFrame"`
AnimateFramesPerSecond string `xml:"AnimateFramesPerSecond"`
Quality string `xml:"Quality"`
}
// Animation TODO
type Animation struct {
Container *Container `xml:"Container,omitempty"`
Video *AnimationVideo `xml:"Video,omitempty"`
TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"`
}
// HlsEncrypt TODO
type HlsEncrypt struct {
IsHlsEncrypt bool `xml:"IsHlsEncrypt,omitempty"`
UriKey string `xml:"UriKey,omitempty"`
}
// Segment TODO
type Segment struct {
Format string `xml:"Format,omitempty"`
Duration string `xml:"Duration,omitempty"`
HlsEncrypt *HlsEncrypt `xml:"HlsEncrypt,omitempty"`
}
// VideoMontageVideo TODO
type VideoMontageVideo struct {
Codec string `xml:"Codec"`
Width string `xml:"Width"`
Height string `xml:"Height"`
Fps string `xml:"Fps"`
Remove string `xml:"Remove,omitempty"`
Bitrate string `xml:"Bitrate"`
Crf string `xml:"Crf"`
}
// VideoMontage TODO
type VideoMontage struct {
Container *Container `xml:"Container,omitempty"`
Video *VideoMontageVideo `xml:"Video,omitempty"`
Audio *Audio `xml:"Audio,omitempty"`
Duration string `xml:"Duration,omitempty"`
AudioMix *AudioMix `xml:"AudioMix,omitempty"`
}
// AudioConfig TODO
type AudioConfig struct {
Codec string `xml:"Codec"`
Samplerate string `xml:"Samplerate"`
Bitrate string `xml:"Bitrate"`
Channels string `xml:"Channels"`
}
// VoiceSeparate TODO
type VoiceSeparate struct {
AudioMode string `xml:"AudioMode,omitempty"` // IsAudio 人声, IsBackground 背景声, AudioAndBackground 人声和背景声
AudioConfig *AudioConfig `xml:"AudioConfig,omitempty"`
}
// ColorEnhance TODO
type ColorEnhance struct {
Enable string `xml:"Enable"`
Contrast string `xml:"Contrast"`
Correction string `xml:"Correction"`
Saturation string `xml:"Saturation"`
}
// MsSharpen TODO
type MsSharpen struct {
Enable string `xml:"Enable"`
SharpenLevel string `xml:"SharpenLevel"`
}
// VideoProcess TODO
type VideoProcess struct {
ColorEnhance *ColorEnhance `xml:"ColorEnhance,omitempty"`
MsSharpen *MsSharpen `xml:"MsSharpen,omitempty"`
}
// SDRtoHDR TODO
type SDRtoHDR struct {
HdrMode string `xml:"HdrMode,omitempty"` // HLG、HDR10
}
// SuperResolution TODO
type SuperResolution struct {
Resolution string `xml:"Resolution,omitempty"` // sdtohd、hdto4k
EnableScaleUp string `xml:"EnableScaleUp,omitempty"`
Version string `xml:"Version,omitempty"`
}
// DigitalWatermark TODO
type DigitalWatermark struct {
Message string `xml:"Message"`
Type string `xml:"Type"`
Version string `xml:"Version"`
}
// ExtractDigitalWatermark TODO
type ExtractDigitalWatermark struct {
Type string `xml:"Type"`
Version string `xml:"Version"`
}
// VideoTag TODO
type VideoTag struct {
Scenario string `xml:"Scenario,omitempty"`
}
// VideoTagResult TODO
type VideoTagResult struct {
StreamData *VideoTagResultStreamData `xml:"StreamData,omitempty"`
}
// VideoTagResultStreamData TODO
type VideoTagResultStreamData struct {
SubErrCode string `xml:"SubErrCode,omitempty"`
SubErrMsg string `xml:"SubErrMsg,omitempty"`
Data *VideoTagResultStreamDataData `xml:"Data,omitempty"`
}
// VideoTagResultStreamDataData TODO
type VideoTagResultStreamDataData struct {
Tags []VideoTagResultStreamDataDataTags `xml:"Tags,omitempty"`
PersonTags []VideoTagResultStreamDataDataPersonTags `xml:"PersonTags,omitempty"`
PlaceTags []VideoTagResultStreamDataDataPlaceTags `xml:"PlaceTags,omitempty"`
ActionTags []VideoTagResultStreamDataDataActionTags `xml:"ActionTags,omitempty"`
ObjectTags []VideoTagResultStreamDataDataObjectTags `xml:"ObjectTags,omitempty"`
}
// VideoTagResultStreamDataDataTags TODO
type VideoTagResultStreamDataDataTags struct {
Tag string `xml:"Tag,omitempty"`
TagCls string `xml:"TagCls,omitempty"`
Confidence float64 `xml:"Confidence,omitempty"`
}
// VideoTagResultStreamDataDataPersonTags TODO
type VideoTagResultStreamDataDataPersonTags struct {
Name string `xml:"Name,omitempty"`
Confidence float64 `xml:"Confidence,omitempty"`
Count string `xml:"Count,omitempty"`
DetailPerSecond []VideoTagResultStreamDataDataPersonTagsDetailPerSecond `xml:"DetailPerSecond,omitempty"`
}
// VideoTagResultStreamDataDataPersonTagsDetailPerSecond TODO
type VideoTagResultStreamDataDataPersonTagsDetailPerSecond struct {
TimeStamp string `xml:"TimeStamp,omitempty"`
Name string `xml:"Name,omitempty"`
Confidence float64 `xml:"Confidence,omitempty"`
BBox []VideoTagResultStreamDataDataPersonTagsDetailPerSecondBBox `xml:"BBox,omitempty"`
}
// VideoTagResultStreamDataDataPersonTags TODO
type VideoTagResultStreamDataDataPersonTagsDetailPerSecondBBox struct {
X1 string `xml:"X1,omitempty"`
X2 string `xml:"X2,omitempty"`
Y1 string `xml:"Y1,omitempty"`
Y2 string `xml:"Y2,omitempty"`
}
// VideoTagResultStreamDataDataPlaceTags TODO
type VideoTagResultStreamDataDataPlaceTags struct {
Tags []VideoTagResultStreamDataDataTags `xml:"Tags,omitempty"`
ClipFrameResult []string `xml:"ClipFrameResult,omitempty"`
StartTime string `xml:"StartTime,omitempty"`
EndTime string `xml:"EndTime,omitempty"`
StartIndex string `xml:"StartIndex,omitempty"`
EndIndex string `xml:"EndIndex,omitempty"`
}
// VideoTagResultStreamDataDataActionTags TODO
type VideoTagResultStreamDataDataActionTags struct {
Tags []VideoTagResultStreamDataDataTags `xml:"Tags,omitempty"`
StartTime string `xml:"StartTime,omitempty"`
EndTime string `xml:"EndTime,omitempty"`
}
// VideoTagResultStreamDataDataObjectTags TODO
type VideoTagResultStreamDataDataObjectTags struct {
Objects []VideoTagResultStreamDataDataPersonTagsDetailPerSecond `xml:"Objects,omitempty"`
TimeStamp string `xml:"TimeStamp,omitempty"`
}
// QualityEstimate TODO
type QualityEstimate struct {
Score string `xml:"Score,omitempty"`
}
// QualityEstimate TODO
type QualityEstimateConfig struct {
Rotate string `xml:"Rotate,omitempty"`
}
// MediaResult TODO
type MediaResult struct {
OutputFile struct {
Bucket string `xml:"Bucket,omitempty"`
Md5Info []struct {
Md5 string `xml:"Md5,omitempty"`
ObjectName string `xml:"ObjectName,omitempty"`
} `xml:"Md5Info,omitempty"`
ObjectName []string `xml:"ObjectName,omitempty"`
ObjectPrefix string `xml:"ObjectPrefix,omitempty"`
Region string `xml:"Region,omitempty"`
SpriteOutputFile struct {
Bucket string `xml:"Bucket,omitempty"`
Md5Info []struct {
Md5 string `xml:"Md5,omitempty"`
ObjectName string `xml:"ObjectName,omitempty"`
} `xml:"Md5Info,omitempty"`
ObjectName []string `xml:"ObjectName,omitempty"`
ObjectPrefix string `xml:"ObjectPrefix,omitempty"`
Region string `xml:"Region,omitempty"`
} `xml:"SpriteOutputFile,omitempty"`
} `xml:"OutputFile,omitempty"`
}
// MediaInfo TODO
type MediaInfo struct {
Format struct {
Bitrate string `xml:"Bitrate"`
Duration string `xml:"Duration"`
FormatLongName string `xml:"FormatLongName"`
FormatName string `xml:"FormatName"`
NumProgram string `xml:"NumProgram"`
NumStream string `xml:"NumStream"`
Size string `xml:"Size"`
StartTime string `xml:"StartTime"`
} `xml:"Format"`
Stream struct {
Audio []struct {
Bitrate string `xml:"Bitrate"`
Channel string `xml:"Channel"`
ChannelLayout string `xml:"ChannelLayout"`
CodecLongName string `xml:"CodecLongName"`
CodecName string `xml:"CodecName"`
CodecTag string `xml:"CodecTag"`
CodecTagString string `xml:"CodecTagString"`
CodecTimeBase string `xml:"CodecTimeBase"`
Duration string `xml:"Duration"`
Index string `xml:"Index"`
Language string `xml:"Language"`
SampleFmt string `xml:"SampleFmt"`
SampleRate string `xml:"SampleRate"`
StartTime string `xml:"StartTime"`
Timebase string `xml:"Timebase"`
} `xml:"Audio"`
Subtitle string `xml:"Subtitle"`
Video []struct {
AvgFps string `xml:"AvgFps"`
Bitrate string `xml:"Bitrate"`
CodecLongName string `xml:"CodecLongName"`
CodecName string `xml:"CodecName"`
CodecTag string `xml:"CodecTag"`
CodecTagString string `xml:"CodecTagString"`
CodecTimeBase string `xml:"CodecTimeBase"`
Dar string `xml:"Dar"`
Duration string `xml:"Duration"`
Fps string `xml:"Fps"`
HasBFrame string `xml:"HasBFrame"`
Height string `xml:"Height"`
Index string `xml:"Index"`
Language string `xml:"Language"`
Level string `xml:"Level"`
NumFrames string `xml:"NumFrames"`
PixFormat string `xml:"PixFormat"`
Profile string `xml:"Profile"`
RefFrames string `xml:"RefFrames"`
Rotation string `xml:"Rotation"`
Sar string `xml:"Sar"`
StartTime string `xml:"StartTime"`
Timebase string `xml:"Timebase"`
Width string `xml:"Width"`
ColorRange string `xml:"ColorRange"`
ColorTransfer string `xml:"ColorTransfer"`
ColorPrimaries string `xml:"ColorPrimaries"`
} `xml:"Video"`
} `xml:"Stream"`
}
// PicProcess TODO
type PicProcess struct {
IsPicInfo string `xml:"IsPicInfo,omitempty"`
ProcessRule string `xml:"ProcessRule,omitempty"`
}
// PicProcessResult TODO
type PicProcessResult struct {
UploadResult struct {
OriginalInfo struct {
Key string `xml:"Key"`
Location string `xml:"Location"`
ETag string `xml:"ETag"`
ImageInfo struct {
Format string `xml:"Format"`
Width int32 `xml:"Width"`
Height int32 `xml:"Height"`
Quality int32 `xml:"Quality"`
Ave string `xml:"Ave"`
Orientation int32 `xml:"Orientation"`
} `xml:"ImageInfo"`
} `xml:"OriginalInfo"`
ProcessResults struct {
Object struct {
Key string `xml:"Key"`
Location string `xml:"Location"`
Format string `xml:"Format"`
Width int32 `xml:"Width"`
Height int32 `xml:"Height"`
Size int32 `xml:"Size"`
Quality int32 `xml:"Quality"`
Etag string `xml:"Etag"`
} `xml:"Object"`
} `xml:"ProcessResults"`
} `xml:"UploadResult"`
}
// PicProcessJobOperation TODO
type PicProcessJobOperation struct {
PicProcess *PicProcess `xml:"PicProcess,omitempty"`
PicProcessResult *PicProcessResult `xml:"PicProcessResult,omitempty"`
Output *JobOutput `xml:"Output,omitempty"`
}
// MediaProcessJobOperation TODO
type MediaProcessJobOperation struct {
Tag string `xml:"Tag,omitempty"`
Output *JobOutput `xml:"Output,omitempty"`
MediaResult *MediaResult `xml:"MediaResult,omitempty"`
MediaInfo *MediaInfo `xml:"MediaInfo,omitempty"`
Transcode *Transcode `xml:"Transcode,omitempty"`
Watermark []Watermark `xml:"Watermark,omitempty"`
TemplateId string `xml:"TemplateId,omitempty"`
WatermarkTemplateId []string `xml:"WatermarkTemplateId,omitempty"`
ConcatTemplate *ConcatTemplate `xml:"ConcatTemplate,omitempty"`
Snapshot *Snapshot `xml:"Snapshot,omitempty"`
Animation *Animation `xml:"Animation,omitempty"`
Segment *Segment `xml:"Segment,omitempty"`
VideoMontage *VideoMontage `xml:"VideoMontage,omitempty"`
VoiceSeparate *VoiceSeparate `xml:"VoiceSeparate,omitempty"`
VideoProcess *VideoProcess `xml:"VideoProcess,omitempty"`
TranscodeTemplateId string `xml:"TranscodeTemplateId,omitempty"` // 视频增强、超分、SDRtoHDR任务类型可以选择转码模板相关参数
SDRtoHDR *SDRtoHDR `xml:"SDRtoHDR,omitempty"`
SuperResolution *SuperResolution `xml:"SuperResolution,omitempty"`
DigitalWatermark *DigitalWatermark `xml:"DigitalWatermark,omitempty"`
ExtractDigitalWatermark *ExtractDigitalWatermark `xml:"ExtractDigitalWatermark,omitempty"`
VideoTag *VideoTag `xml:"VideoTag,omitempty"`
VideoTagResult *VideoTagResult `xml:"VideoTagResult,omitempty"`
SmartCover *NodeSmartCover `xml:"SmartCover,omitempty"`
UserData string `xml:"UserData,omitempty"`
JobLevel int `xml:"JobLevel,omitempty"`
QualityEstimate *QualityEstimate `xml:"QualityEstimate,omitempty"`
TtsTpl *TtsTpl `xml:"TtsTpl,omitempty"`
TtsConfig *TtsConfig `xml:"TtsConfig,omitempty"`
Translation *Translation `xml:"Translation,omitempty"`
WordsGeneralize *WordsGeneralize `xml:"WordsGeneralize,omitempty"`
WordsGeneralizeResult *WordsGeneralizeResult `xml:"WordsGeneralizeResult,omitempty"`
QualityEstimateConfig *QualityEstimateConfig `xml:"QualityEstimateConfig,omitempty"`
}
// CreatePicJobsOptions TODO
type CreatePicJobsOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Input *JobInput `xml:"Input,omitempty"`
Operation *PicProcessJobOperation `xml:"Operation,omitempty"`
QueueId string `xml:"QueueId,omitempty"`
CallBack string `xml:"CallBack,omitempty"`
}
// CreateAIJobsOptions TODO
type CreateAIJobsOptions CreateMediaJobsOptions
// CreateMediaJobsOptions TODO
type CreateMediaJobsOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Input *JobInput `xml:"Input,omitempty"`
Operation *MediaProcessJobOperation `xml:"Operation,omitempty"`
QueueId string `xml:"QueueId,omitempty"`
CallBackFormat string `xml:"CallBackFormat,omitempty"`
CallBackType string `xml:"CallBackType,omitempty"`
CallBack string `xml:"CallBack,omitempty"`
CallBackMqConfig *NotifyConfigCallBackMqConfig `xml:"CallBackMqConfig,omitempty"`
}
// NotifyConfigCallBackMqConfig TODO
type NotifyConfigCallBackMqConfig struct {
MqMode string `xml:"MqMode,omitempty"`
MqRegion string `xml:"MqRegion,omitempty"`
MqName string `xml:"MqName,omitempty"`
}
// MediaProcessJobDetail TODO
type MediaProcessJobDetail struct {
Code string `xml:"Code,omitempty"`
Message string `xml:"Message,omitempty"`
JobId string `xml:"JobId,omitempty"`
Tag string `xml:"Tag,omitempty"`
Progress string `xml:"Progress,omitempty"`
State string `xml:"State,omitempty"`
CreationTime string `xml:"CreationTime,omitempty"`
StartTime string `xml:"StartTime,omitempty"`
EndTime string `xml:"EndTime,omitempty"`
QueueId string `xml:"QueueId,omitempty"`
Input *JobInput `xml:"Input,omitempty"`
Operation *MediaProcessJobOperation `xml:"Operation,omitempty"`
}
// CreatePicJobsResult TODO
type CreatePicJobsResult CreateMediaJobsResult
// CreateAIJobsResult TODO
type CreateAIJobsResult CreateMediaJobsResult
// CreateMediaJobsResult TODO
type CreateMediaJobsResult struct {
XMLName xml.Name `xml:"Response"`
JobsDetail *MediaProcessJobDetail `xml:"JobsDetail,omitempty"`
}
// CreateMultiMediaJobsOptions TODO
type CreateMultiMediaJobsOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Input *JobInput `xml:"Input,omitempty"`
Operation []MediaProcessJobOperation `xml:"Operation,omitempty"`
QueueId string `xml:"QueueId,omitempty"`
CallBack string `xml:"CallBack,omitempty"`
}
// CreateMultiMediaJobsResult TODO
type CreateMultiMediaJobsResult struct {
XMLName xml.Name `xml:"Response"`
JobsDetail []MediaProcessJobDetail `xml:"JobsDetail,omitempty"`
}
// MediaProcessJobsNotifyBody TODO
type MediaProcessJobsNotifyBody struct {
XMLName xml.Name `xml:"Response"`
EventName string `xml:"EventName"`
JobsDetail *MediaProcessJobDetail `xml:"JobsDetail,omitempty"`
}
// WorkflowExecutionNotifyBody TODO
type WorkflowExecutionNotifyBody struct {
XMLName xml.Name `xml:"Response"`
EventName string `xml:"EventName"`
WorkflowExecution struct {
RunId string `xml:"RunId"`
BucketId string `xml:"BucketId"`
Object string `xml:"Object"`
CosHeaders []struct {
Key string `xml:"Key"`
Value string `xml:"Value"`
} `xml:"CosHeaders"`
WorkflowId string `xml:"WorkflowId"`
WorkflowName string `xml:"WorkflowName"`
CreateTime string `xml:"CreateTime"`
State string `xml:"State"`
Tasks []struct {
Type string `xml:"Type"`
CreateTime string `xml:"CreateTime"`
EndTime string `xml:"EndTime"`
State string `xml:"State"`
JobId string `xml:"JobId"`
Name string `xml:"Name"`
TemplateId string `xml:"TemplateId"`
TemplateName string `xml:"TemplateName"`
TranscodeTemplateId string `xml:"TranscodeTemplateId,omitempty"`
TranscodeTemplateName string `xml:"TranscodeTemplateName,omitempty"`
HdrMode string `xml:"HdrMode,omitempty"`
} `xml:"Tasks"`
} `xml:"WorkflowExecution"`
}
// CreateMultiMediaJobs TODO
func (s *CIService) CreateMultiMediaJobs(ctx context.Context, opt *CreateMultiMediaJobsOptions) (*CreateMultiMediaJobsResult, *Response, error) {
var res CreateMultiMediaJobsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/jobs",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaJobs TODO
func (s *CIService) CreateMediaJobs(ctx context.Context, opt *CreateMediaJobsOptions) (*CreateMediaJobsResult, *Response, error) {
var res CreateMediaJobsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/jobs",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreatePicProcessJobs TODO
func (s *CIService) CreatePicProcessJobs(ctx context.Context, opt *CreatePicJobsOptions) (*CreatePicJobsResult, *Response, error) {
var res CreatePicJobsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/pic_jobs",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateAIJobs TODO
func (s *CIService) CreateAIJobs(ctx context.Context, opt *CreateAIJobsOptions) (*CreateAIJobsResult, *Response, error) {
var res CreateAIJobsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/ai_jobs",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribePicProcessJobResult TODO
type DescribePicProcessJobResult DescribeMediaProcessJobResult
// DescribeAIJobResult TODO
type DescribeAIJobResult DescribeMediaProcessJobResult
// DescribeMediaProcessJobResult TODO
type DescribeMediaProcessJobResult struct {
XMLName xml.Name `xml:"Response"`
JobsDetail *MediaProcessJobDetail `xml:"JobsDetail,omitempty"`
NonExistJobIds string `xml:"NonExistJobIds,omitempty"`
}
// DescribeMediaJob TODO
func (s *CIService) DescribeMediaJob(ctx context.Context, jobid string) (*DescribeMediaProcessJobResult, *Response, error) {
var res DescribeMediaProcessJobResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/jobs/" + jobid,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribePicProcessJob TODO
func (s *CIService) DescribePicProcessJob(ctx context.Context, jobid string) (*DescribePicProcessJobResult, *Response, error) {
var res DescribePicProcessJobResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/pic_jobs/" + jobid,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeAIJob TODO
func (s *CIService) DescribeAIJob(ctx context.Context, jobid string) (*DescribeAIJobResult, *Response, error) {
var res DescribeAIJobResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/ai_jobs/" + jobid,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeMutilMediaProcessJobResult TODO
type DescribeMutilMediaProcessJobResult struct {
XMLName xml.Name `xml:"Response"`
JobsDetail []MediaProcessJobDetail `xml:"JobsDetail,omitempty"`
NonExistJobIds []string `xml:"NonExistJobIds,omitempty"`
}
// DescribeMultiMediaJob TODO
func (s *CIService) DescribeMultiMediaJob(ctx context.Context, jobids []string) (*DescribeMutilMediaProcessJobResult, *Response, error) {
jobidsStr := ""
if len(jobids) < 1 {
return nil, nil, errors.New("empty param jobids")
} else {
jobidsStr = strings.Join(jobids, ",")
}
var res DescribeMutilMediaProcessJobResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/jobs/" + jobidsStr,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeMediaJobsOptions TODO
type DescribeMediaJobsOptions struct {
QueueId string `url:"queueId,omitempty"`
Tag string `url:"tag,omitempty"`
OrderByTime string `url:"orderByTime,omitempty"`
NextToken string `url:"nextToken,omitempty"`
Size int `url:"size,omitempty"`
States string `url:"states,omitempty"`
StartCreationTime string `url:"startCreationTime,omitempty"`
EndCreationTime string `url:"endCreationTime,omitempty"`
WorkflowId string `url:"workflowId,omitempty"`
InventoryTriggerJobId string `url:"inventoryTriggerJobId,omitempty"`
InputObject string `url:"inputObject,omitempty"`
}
// DescribeMediaJobsResult TODO
type DescribeMediaJobsResult struct {
XMLName xml.Name `xml:"Response"`
JobsDetail []MediaProcessJobDetail `xml:"JobsDetail,omitempty"`
NextToken string `xml:"NextToken,omitempty"`
}
// DescribeMediaJobs TODO
// https://cloud.tencent.com/document/product/460/48235
func (s *CIService) DescribeMediaJobs(ctx context.Context, opt *DescribeMediaJobsOptions) (*DescribeMediaJobsResult, *Response, error) {
var res DescribeMediaJobsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/jobs",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribePicProcessQueuesOptions TODO
type DescribePicProcessQueuesOptions DescribeMediaProcessQueuesOptions
// DescribeMediaProcessQueuesOptions TODO
type DescribeMediaProcessQueuesOptions struct {
QueueIds string `url:"queueIds,omitempty"`
State string `url:"state,omitempty"`
PageNumber int `url:"pageNumber,omitempty"`
PageSize int `url:"pageSize,omitempty"`
Category string `url:"category,omitempty"`
}
// DescribePicProcessQueuesResult TODO
type DescribePicProcessQueuesResult DescribeMediaProcessQueuesResult
// DescribeMediaProcessQueuesResult TODO
type DescribeMediaProcessQueuesResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
TotalCount int `xml:"TotalCount,omitempty"`
PageNumber int `xml:"PageNumber,omitempty"`
PageSize int `xml:"PageSize,omitempty"`
QueueList []MediaProcessQueue `xml:"QueueList,omitempty"`
NonExistPIDs []string `xml:"NonExistPIDs,omitempty"`
}
// MediaProcessQueue TODO
type MediaProcessQueue struct {
QueueId string `xml:"QueueId,omitempty"`
Name string `xml:"Name,omitempty"`
State string `xml:"State,omitempty"`
MaxSize int `xml:"MaxSize,omitempty"`
MaxConcurrent int `xml:"MaxConcurrent,omitempty"`
UpdateTime string `xml:"UpdateTime,omitempty"`
CreateTime string `xml:"CreateTime,omitempty"`
NotifyConfig *MediaProcessQueueNotifyConfig `xml:"NotifyConfig,omitempty"`
}
// MediaProcessQueueNotifyConfig TODO
type MediaProcessQueueNotifyConfig struct {
Url string `xml:"Url,omitempty"`
State string `xml:"State,omitempty"`
Type string `xml:"Type,omitempty"`
Event string `xml:"Event,omitempty"`
ResultFormat string `xml:"ResultFormat,omitempty"`
MqMode string `xml:"MqMode,omitempty"`
MqRegion string `xml:"MqRegion,omitempty"`
MqName string `xml:"MqName,omitempty"`
}
// DescribeMediaProcessQueues TODO
func (s *CIService) DescribeMediaProcessQueues(ctx context.Context, opt *DescribeMediaProcessQueuesOptions) (*DescribeMediaProcessQueuesResult, *Response, error) {
var res DescribeMediaProcessQueuesResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/queue",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribePicProcessQueues TODO
func (s *CIService) DescribePicProcessQueues(ctx context.Context, opt *DescribePicProcessQueuesOptions) (*DescribePicProcessQueuesResult, *Response, error) {
var res DescribePicProcessQueuesResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/picqueue",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeAIProcessQueues TODO
func (s *CIService) DescribeAIProcessQueues(ctx context.Context, opt *DescribeMediaProcessQueuesOptions) (*DescribeMediaProcessQueuesResult, *Response, error) {
var res DescribeMediaProcessQueuesResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/ai_queue",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeASRQueues TODO
func (s *CIService) DescribeASRProcessQueues(ctx context.Context, opt *DescribeMediaProcessQueuesOptions) (*DescribeMediaProcessQueuesResult, *Response, error) {
var res DescribeMediaProcessQueuesResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/asrqueue",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaProcessQueueOptions TODO
type UpdateMediaProcessQueueOptions struct {
XMLName xml.Name `xml:"Request"`
Name string `xml:"Name,omitempty"`
QueueID string `xml:"QueueID,omitempty"`
State string `xml:"State,omitempty"`
NotifyConfig *MediaProcessQueueNotifyConfig `xml:"NotifyConfig,omitempty"`
}
// UpdateMediaProcessQueueResult TODO
type UpdateMediaProcessQueueResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId"`
Queue *MediaProcessQueue `xml:"Queue"`
}
// UpdateMediaProcessQueue TODO
func (s *CIService) UpdateMediaProcessQueue(ctx context.Context, opt *UpdateMediaProcessQueueOptions) (*UpdateMediaProcessQueueResult, *Response, error) {
var res UpdateMediaProcessQueueResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/queue/" + opt.QueueID,
body: opt,
method: http.MethodPut,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribePicProcessBucketsOptions TODO
type DescribePicProcessBucketsOptions DescribeMediaProcessBucketsOptions
// DescribeAIProcessBucketsOptions TODO
type DescribeAIProcessBucketsOptions DescribeMediaProcessBucketsOptions
// DescribeASRProcessBucketsOptions TODO
type DescribeASRProcessBucketsOptions DescribeMediaProcessBucketsOptions
// DescribeMediaProcessBucketsOptions TODO
type DescribeMediaProcessBucketsOptions struct {
Regions string `url:"regions,omitempty"`
BucketNames string `url:"bucketNames,omitempty"`
BucketName string `url:"bucketName,omitempty"`
PageNumber int `url:"pageNumber,omitempty"`
PageSize int `url:"pageSize,omitempty"`
}
// DescribeMediaProcessBucketsResult TODO
type DescribeMediaProcessBucketsResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
TotalCount int `xml:"TotalCount,omitempty"`
PageNumber int `xml:"PageNumber,omitempty"`
PageSize int `xml:"PageSize,omitempty"`
MediaBucketList []MediaProcessBucket `xml:"MediaBucketList,omitempty"`
}
// DescribeMediaProcessBucketsResult TODO
type DescribePicProcessBucketsResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
TotalCount int `xml:"TotalCount,omitempty"`
PageNumber int `xml:"PageNumber,omitempty"`
PageSize int `xml:"PageSize,omitempty"`
MediaBucketList []MediaProcessBucket `xml:"PicBucketList,omitempty"`
}
// DescribeMediaProcessBucketsResult TODO
type DescribeAIProcessBucketsResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
TotalCount int `xml:"TotalCount,omitempty"`
PageNumber int `xml:"PageNumber,omitempty"`
PageSize int `xml:"PageSize,omitempty"`
MediaBucketList []MediaProcessBucket `xml:"AiBucketList,omitempty"`
}
// DescribeMediaProcessBucketsResult TODO
type DescribeASRProcessBucketsResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
TotalCount int `xml:"TotalCount,omitempty"`
PageNumber int `xml:"PageNumber,omitempty"`
PageSize int `xml:"PageSize,omitempty"`
MediaBucketList []MediaProcessBucket `xml:"AsrBucketList,omitempty"`
}
// MediaProcessBucket TODO
type MediaProcessBucket struct {
Name string `xml:"Name,omitempty"`
BucketId string `xml:"BucketId,omitempty"`
Region string `xml:"Region,omitempty"`
CreateTime string `xml:"CreateTime,omitempty"`
}
// DescribeMediaProcessBuckets TODO
// 媒体bucket接口 https://cloud.tencent.com/document/product/436/48988
func (s *CIService) DescribeMediaProcessBuckets(ctx context.Context, opt *DescribeMediaProcessBucketsOptions) (*DescribeMediaProcessBucketsResult, *Response, error) {
var res DescribeMediaProcessBucketsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/mediabucket",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribePicProcessBuckets TODO
func (s *CIService) DescribePicProcessBuckets(ctx context.Context, opt *DescribePicProcessBucketsOptions) (*DescribePicProcessBucketsResult, *Response, error) {
var res DescribePicProcessBucketsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/picbucket",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeAIProcessBuckets TODO
func (s *CIService) DescribeAIProcessBuckets(ctx context.Context, opt *DescribeAIProcessBucketsOptions) (*DescribeAIProcessBucketsResult, *Response, error) {
var res DescribeAIProcessBucketsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/ai_bucket",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeASRProcessBuckets TODO
func (s *CIService) DescribeASRProcessBuckets(ctx context.Context, opt *DescribeASRProcessBucketsOptions) (*DescribeASRProcessBucketsResult, *Response, error) {
var res DescribeASRProcessBucketsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/asrbucket",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// GetMediaInfoResult TODO
type GetMediaInfoResult struct {
XMLName xml.Name `xml:"Response"`
MediaInfo *MediaInfo `xml:"MediaInfo"`
}
// GetMediaInfo TODO
// 媒体信息接口 https://cloud.tencent.com/document/product/436/55672
func (s *CIService) GetMediaInfo(ctx context.Context, name string, opt *ObjectGetOptions, id ...string) (*GetMediaInfoResult, *Response, error) {
var u string
if len(id) == 1 {
u = fmt.Sprintf("/%s?versionId=%s&ci-process=videoinfo", encodeURIComponent(name), id[0])
} else if len(id) == 0 {
u = fmt.Sprintf("/%s?ci-process=videoinfo", encodeURIComponent(name))
} else {
return nil, nil, fmt.Errorf("wrong params")
}
var res GetMediaInfoResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BucketURL,
uri: u,
method: http.MethodGet,
optQuery: opt,
optHeader: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// GenerateMediaInfoOptions TODO
type GenerateMediaInfoOptions struct {
XMLName xml.Name `xml:"Request"`
Input *JobInput `xml:"Input,omitempty"`
}
// GenerateMediaInfo TODO
// 生成媒体信息接口,支持大文件,耗时较大请求
func (s *CIService) GenerateMediaInfo(ctx context.Context, opt *GenerateMediaInfoOptions) (*GetMediaInfoResult, *Response, error) {
var res GetMediaInfoResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/mediainfo",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// GetSnapshotOptions TODO
type GetSnapshotOptions struct {
Time float32 `url:"time,omitempty"`
Height int `url:"height,omitempty"`
Width int `url:"width,omitempty"`
Format string `url:"format,omitempty"`
Rotate string `url:"rotate,omitempty"`
Mode string `url:"mode,omitempty"`
}
// GetSnapshot TODO
// 媒体截图接口 https://cloud.tencent.com/document/product/436/55671
func (s *CIService) GetSnapshot(ctx context.Context, name string, opt *GetSnapshotOptions, id ...string) (*Response, error) {
var u string
if len(id) == 1 {
u = fmt.Sprintf("/%s?versionId=%s&ci-process=snapshot", encodeURIComponent(name), id[0])
} else if len(id) == 0 {
u = fmt.Sprintf("/%s?ci-process=snapshot", encodeURIComponent(name))
} else {
return nil, fmt.Errorf("wrong params")
}
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BucketURL,
uri: u,
method: http.MethodGet,
optQuery: opt,
disableCloseBody: true,
}
resp, err := s.client.send(ctx, &sendOpt)
return resp, err
}
type PostSnapshotOptions struct {
XMLName xml.Name `xml:"Request"`
Input *JobInput `xml:"Input,omitempty"`
Time string `xml:"Time,omitempty"`
Width int `xml:"Width,omitempty"`
Height int `xml:"Height,omitempty"`
Mode string `xml:"Mode,omitempty"`
Rotate string `xml:"Rotate,omitempty"`
Format string `xml:"Format,omitempty"`
Output *JobOutput `xml:"Output,omitempty"`
}
type PostSnapshotResult struct {
XMLName xml.Name `xml:"Response"`
Output *JobOutput `xml:"Output, omitempty"`
}
// PostSnapshot
// https://cloud.tencent.com/document/product/460/73407
// upload snapshot image to cos
func (s *CIService) PostSnapshot(ctx context.Context, opt *PostSnapshotOptions) (*PostSnapshotResult, *Response, error) {
var res PostSnapshotResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/snapshot",
body: opt,
method: http.MethodPost,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// GetPrivateM3U8Options TODO
type GetPrivateM3U8Options struct {
Expires int `url:"expires"`
}
// GetPrivateM3U8 TODO
// 获取私有m3u8资源接口 https://cloud.tencent.com/document/product/460/63738
func (s *CIService) GetPrivateM3U8(ctx context.Context, name string, opt *GetPrivateM3U8Options, id ...string) (*Response, error) {
var u string
if len(id) == 1 {
u = fmt.Sprintf("/%s?versionId=%s&ci-process=pm3u8", encodeURIComponent(name), id[0])
} else if len(id) == 0 {
u = fmt.Sprintf("/%s?ci-process=pm3u8", encodeURIComponent(name))
} else {
return nil, fmt.Errorf("wrong params")
}
sendOpt := sendOptions{
baseURL: s.client.BaseURL.BucketURL,
uri: u,
method: http.MethodGet,
optQuery: opt,
disableCloseBody: true,
}
resp, err := s.client.send(ctx, &sendOpt)
return resp, err
}
// TriggerWorkflowOptions TODO
type TriggerWorkflowOptions struct {
WorkflowId string `url:"workflowId"`
Object string `url:"object"`
}
// TriggerWorkflowResult TODO
type TriggerWorkflowResult struct {
XMLName xml.Name `xml:"Response"`
InstanceId string `xml:"InstanceId"`
RequestId string `xml:"RequestId"`
}
// TriggerWorkflow TODO
// 单文件触发工作流 https://cloud.tencent.com/document/product/460/54640
func (s *CIService) TriggerWorkflow(ctx context.Context, opt *TriggerWorkflowOptions) (*TriggerWorkflowResult, *Response, error) {
var res TriggerWorkflowResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/triggerworkflow",
optQuery: opt,
method: http.MethodPost,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeWorkflowExecutionsOptions TODO
type DescribeWorkflowExecutionsOptions struct {
WorkflowId string `url:"workflowId,omitempty"`
Name string `url:"Name,omitempty"`
OrderByTime string `url:"orderByTime,omitempty"`
NextToken string `url:"nextToken,omitempty"`
Size int `url:"size,omitempty"`
States string `url:"states,omitempty"`
StartCreationTime string `url:"startCreationTime,omitempty"`
EndCreationTime string `url:"endCreationTime,omitempty"`
}
// WorkflowExecutionList TODO
type WorkflowExecutionList struct {
RunId string `xml:"RunId,omitempty"`
WorkflowId string `xml:"WorkflowId,omitempty"`
State string `xml:"State,omitempty"`
CreationTime string `xml:"CreationTime,omitempty"`
Object string `xml:"Object,omitempty"`
}
// DescribeWorkflowExecutionsResult TODO
type DescribeWorkflowExecutionsResult struct {
XMLName xml.Name `xml:"Response"`
WorkflowExecutionList []WorkflowExecutionList `xml:"WorkflowExecutionList,omitempty"`
NextToken string `xml:"NextToken,omitempty"`
}
// DescribeWorkflowExecutions TODO
// 获取工作流实例列表 https://cloud.tencent.com/document/product/460/45950
func (s *CIService) DescribeWorkflowExecutions(ctx context.Context, opt *DescribeWorkflowExecutionsOptions) (*DescribeWorkflowExecutionsResult, *Response, error) {
var res DescribeWorkflowExecutionsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/workflowexecution",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// NotifyConfig TODO
type NotifyConfig struct {
URL string `xml:"Url,omitempty"`
Event string `xml:"Event,omitempty"`
Type string `xml:"Type,omitempty"`
ResultFormat string `xml:"ResultFormat,omitempty"`
}
// ExtFilter TODO
type ExtFilter struct {
State string `xml:"State,omitempty"`
Audio string `xml:"Audio,omitempty"`
Custom string `xml:"Custom,omitempty"`
CustomExts string `xml:"CustomExts,omitempty"`
AllFile string `xml:"AllFile,omitempty"`
}
// NodeInput TODO
type NodeInput struct {
QueueId string `xml:"QueueId,omitempty"`
ObjectPrefix string `xml:"ObjectPrefix,omitempty"`
NotifyConfig *NotifyConfig `xml:"NotifyConfig,omitempty" json:"NotifyConfig,omitempty"`
ExtFilter *ExtFilter `xml:"ExtFilter,omitempty" json:"ExtFilter,omitempty"`
}
// NodeOutput TODO
type NodeOutput struct {
Region string `xml:"Region,omitempty"`
Bucket string `xml:"Bucket,omitempty"`
Object string `xml:"Object,omitempty"`
AuObject string `xml:"AuObject,omitempty"`
SpriteObject string `xml:"SpriteObject,omitempty"`
}
// DelogoParam TODO
type DelogoParam struct {
Switch string `xml:"Switch,omitempty"`
Dx string `xml:"Dx,omitempty"`
Dy string `xml:"Dy,omitempty"`
Width string `xml:"Width,omitempty"`
Height string `xml:"Height,omitempty"`
}
// NodeSDRtoHDR TODO
type NodeSDRtoHDR struct {
HdrMode string `xml:"HdrMode,omitempty"`
}
// NodeSCF TODO
type NodeSCF struct {
Region string `xml:"Region,omitempty"`
FunctionName string `xml:"FunctionName,omitempty"`
Namespace string `xml:"Namespace,omitempty"`
}
// VideoStreamConfig TODO
type VideoStreamConfig struct {
VideoStreamName string `xml:"VideoStreamName,omitempty"`
BandWidth string `xml:"BandWidth,omitempty"`
}
// NodeHlsPackInfo TODO
type NodeHlsPackInfo struct {
VideoStreamConfig []VideoStreamConfig `xml:"VideoStreamConfig,omitempty"`
}
// NodeSmartCover TODO
type NodeSmartCover struct {
Format string `xml:"Format,omitempty"`
Width string `xml:"Width,omitempty"`
Height string `xml:"Height,omitempty"`
Count string `xml:"Count,omitempty"`
DeleteDuplicates string `xml:"DeleteDuplicates,omitempty"`
}
// NodeSegmentConfig TODO
type NodeSegmentConfig struct {
Format string `xml:"Format,omitempty"`
Duration string `xml:"Duration,omitempty"`
}
// NodeStreamPackConfigInfo TODO
type NodeStreamPackConfigInfo struct {
PackType string `xml:"PackType,omitempty"`
IgnoreFailedStream bool `xml:"IgnoreFailedStream,omitempty"`
ReserveAllStreamNode string `xml:"ReserveAllStreamNode,omitempty"`
}
// NodeOperation TODO
type NodeOperation struct {
TemplateId string `xml:"TemplateId,omitempty" json:"TemplateId,omitempty"`
Output *NodeOutput `xml:"Output,omitempty" json:"Output,omitempty"`
WatermarkTemplateId []string `xml:"WatermarkTemplateId,omitempty" json:"WatermarkTemplateId,omitempty"`
DelogoParam *DelogoParam `xml:"DelogoParam,omitempty" json:"DelogoParam,omitempty"`
SDRtoHDR *NodeSDRtoHDR `xml:"SDRtoHDR,omitempty" json:"SDRtoHDR,omitempty"`
SCF *NodeSCF `xml:"SCF,omitempty" json:"SCF,omitempty"`
HlsPackInfo *NodeHlsPackInfo `xml:"HlsPackInfo,omitempty" json:"HlsPackInfo,omitempty"`
TranscodeTemplateId string `xml:"TranscodeTemplateId,omitempty" json:"TranscodeTemplateId,omitempty"`
SmartCover *NodeSmartCover `xml:"SmartCover,omitempty" json:"SmartCover,omitempty"`
SegmentConfig *NodeSegmentConfig `xml:"SegmentConfig,omitempty" json:"SegmentConfig,omitempty"`
DigitalWatermark *DigitalWatermark `xml:"DigitalWatermark,omitempty" json:"DigitalWatermark,omitempty"`
StreamPackConfigInfo *NodeStreamPackConfigInfo `xml:"StreamPackConfigInfo,omitempty" json:"StreamPackConfigInfo,omitempty"`
StreamPackInfo *NodeHlsPackInfo `xml:"StreamPackInfo,omitempty" json:"StreamPackInfo,omitempty"`
}
// Node TODO
type Node struct {
Type string `xml:"Type"`
Input *NodeInput `xml:"Input,omitempty" json:"Input,omitempty"`
Operation *NodeOperation `xml:"Operation,omitempty" json:"Operation,omitempty"`
}
// Topology TODO
type Topology struct {
Dependencies map[string]string `json:"Dependencies,omitempty"`
Nodes map[string]Node `json:"Nodes,omitempty"`
}
// UnmarshalXML TODO
func (m *Topology) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
var v struct {
XMLName xml.Name //`xml:"Topology"`
Dependencies struct {
Inner []byte `xml:",innerxml"`
} `xml:"Dependencies"`
Nodes struct {
Inner []byte `xml:",innerxml"`
} `xml:"Nodes"`
}
err := d.DecodeElement(&v, &start)
if err != nil {
return err
}
myMap := make(map[string]interface{})
// ... do the mxj magic here ... -
temp := v.Nodes.Inner
prefix := "<Nodes>"
postfix := "</Nodes>"
str := prefix + string(temp) + postfix
//fmt.Println(str)
myMxjMap, _ := mxj.NewMapXml([]byte(str))
myMap, _ = myMxjMap["Nodes"].(map[string]interface{})
nodesMap := make(map[string]Node)
for k, v := range myMap {
var node Node
mapstructure.Decode(v, &node)
nodesMap[k] = node
}
// fill myMap
m.Nodes = nodesMap
deps := make(map[string]interface{})
tep := "<Dependencies>" + string(v.Dependencies.Inner) + "</Dependencies>"
tepMxjMap, _ := mxj.NewMapXml([]byte(tep))
deps, _ = tepMxjMap["Dependencies"].(map[string]interface{})
depsString := make(map[string]string)
for k, v := range deps {
depsString[k] = v.(string)
}
m.Dependencies = depsString
return nil
}
// WorkflowExecution TODO
type WorkflowExecution struct {
RunId string `xml:"RunId,omitempty" json:"RunId,omitempty"`
WorkflowId string `xml:"WorkflowId,omitempty" json:"WorkflowId,omitempty"`
WorkflowName string `xml:"WorkflowName,omitempty" json:"WorkflowName,omitempty"`
State string `xml:"State,omitempty" json:"State,omitempty"`
CreateTime string `xml:"CreateTime,omitempty" json:"CreateTime,omitempty"`
Object string `xml:"Object,omitempty" json:"Object,omitempty"`
Topology Topology `xml:"Topology,omitempty" json:"Topology,omitempty"`
}
// DescribeWorkflowExecutionResult TODO
type DescribeWorkflowExecutionResult struct {
XMLName xml.Name `xml:"Response"`
WorkflowExecution []WorkflowExecution `xml:"WorkflowExecution,omitempty" json:"WorkflowExecution,omitempty"`
NextToken string `xml:"NextToken,omitempty" json:"NextToken,omitempty"`
}
// DescribeWorkflowExecution TODO
// 获取工作流实例详情 https://cloud.tencent.com/document/product/460/45949
func (s *CIService) DescribeWorkflowExecution(ctx context.Context, runId string) (*DescribeWorkflowExecutionResult, *Response, error) {
var res DescribeWorkflowExecutionResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/workflowexecution/" + runId,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// SpeechRecognition TODO
type SpeechRecognition struct {
ChannelNum string `xml:"ChannelNum,omitempty"`
ConvertNumMode string `xml:"ConvertNumMode,omitempty"`
EngineModelType string `xml:"EngineModelType,omitempty"`
FilterDirty string `xml:"FilterDirty,omitempty"`
FilterModal string `xml:"FilterModal,omitempty"`
ResTextFormat string `xml:"ResTextFormat,omitempty"`
SpeakerDiarization string `xml:"SpeakerDiarization,omitempty"`
SpeakerNumber string `xml:"SpeakerNumber,omitempty"`
FilterPunc string `xml:"FilterPunc,omitempty"`
OutputFileType string `xml:"OutputFileType,omitempty"`
}
// SpeechRecognitionResult TODO
type SpeechRecognitionResult struct {
AudioTime float64 `xml:"AudioTime,omitempty"`
Result []string `xml:"Result,omitempty"`
}
// ASRJobOperation TODO
type ASRJobOperation struct {
Tag string `xml:"Tag,omitempty"`
Output *JobOutput `xml:"Output,omitempty"`
SpeechRecognition *SpeechRecognition `xml:"SpeechRecognition,omitempty"`
SpeechRecognitionResult *SpeechRecognitionResult `xml:"SpeechRecognitionResult,omitempty"`
}
// CreateASRJobsOptions TODO
type CreateASRJobsOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Input *JobInput `xml:"Input,omitempty"`
Operation *ASRJobOperation `xml:"Operation,omitempty"`
QueueId string `xml:"QueueId,omitempty"`
CallBack string `xml:"CallBack,omitempty"`
}
// ASRJobDetail TODO
type ASRJobDetail struct {
Code string `xml:"Code,omitempty"`
Message string `xml:"Message,omitempty"`
JobId string `xml:"JobId,omitempty"`
Tag string `xml:"Tag,omitempty"`
State string `xml:"State,omitempty"`
CreationTime string `xml:"CreationTime,omitempty"`
QueueId string `xml:"QueueId,omitempty"`
Input *JobInput `xml:"Input,omitempty"`
Operation *ASRJobOperation `xml:"Operation,omitempty"`
}
// CreateASRJobsResult TODO
type CreateASRJobsResult struct {
XMLName xml.Name `xml:"Response"`
JobsDetail *ASRJobDetail `xml:"JobsDetail,omitempty"`
}
// CreateASRJobs TODO
func (s *CIService) CreateASRJobs(ctx context.Context, opt *CreateASRJobsOptions) (*CreateASRJobsResult, *Response, error) {
var res CreateASRJobsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/asr_jobs",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeMutilASRJobResult TODO
type DescribeMutilASRJobResult struct {
XMLName xml.Name `xml:"Response"`
JobsDetail []ASRJobDetail `xml:"JobsDetail,omitempty"`
NonExistJobIds []string `xml:"NonExistJobIds,omitempty"`
}
// DescribeMultiASRJob TODO
func (s *CIService) DescribeMultiASRJob(ctx context.Context, jobids []string) (*DescribeMutilASRJobResult, *Response, error) {
jobidsStr := ""
if len(jobids) < 1 {
return nil, nil, errors.New("empty param jobids")
} else {
jobidsStr = strings.Join(jobids, ",")
}
var res DescribeMutilASRJobResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/asr_jobs/" + jobidsStr,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeMediaTemplateOptions TODO
type DescribeMediaTemplateOptions struct {
Tag string `url:"tag,omitempty"`
Category string `url:"category,omitempty"`
Ids string `url:"ids,omitempty"`
Name string `url:"name,omitempty"`
PageNumber int `url:"pageNumber,omitempty"`
PageSize int `url:"pageSize,omitempty"`
}
// DescribeMediaTemplateResult TODO
type DescribeMediaTemplateResult struct {
XMLName xml.Name `xml:"Response"`
TemplateList []Template `xml:"TemplateList,omitempty"`
RequestId string `xml:"RequestId,omitempty"`
TotalCount int `xml:"TotalCount,omitempty"`
PageNumber int `xml:"PageNumber,omitempty"`
PageSize int `xml:"PageSize,omitempty"`
}
// DescribeMediaTemplate 搜索模板
func (s *CIService) DescribeMediaTemplate(ctx context.Context, opt *DescribeMediaTemplateOptions) (*DescribeMediaTemplateResult, *Response, error) {
var res DescribeMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DeleteMediaTemplateResult TODO
type DeleteMediaTemplateResult struct {
RequestId string `xml:"RequestId,omitempty"`
TemplateId string `xml:"TemplateId,omitempty"`
}
// DeleteMediaTemplate TODO
func (s *CIService) DeleteMediaTemplate(ctx context.Context, tempalteId string) (*DeleteMediaTemplateResult, *Response, error) {
var res DeleteMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + tempalteId,
method: http.MethodDelete,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaSnapshotTemplateOptions TODO
type CreateMediaSnapshotTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
Snapshot *Snapshot `xml:"Snapshot,omitempty"`
}
// CreateMediaTranscodeTemplateOptions TODO
type CreateMediaTranscodeTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
Container *Container `xml:"Container,omitempty"`
Video *Video `xml:"Video,omitempty"`
Audio *Audio `xml:"Audio,omitempty"`
TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"`
TransConfig *TransConfig `xml:"TransConfig,omitempty"`
AudioMix *AudioMix `xml:"AudioMix,omitempty"`
}
// CreateMediaAnimationTemplateOptions TODO
type CreateMediaAnimationTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
Container *Container `xml:"Container,omitempty"`
Video *AnimationVideo `xml:"Video,omitempty"`
TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"`
}
// CreateMediaConcatTemplateOptions TODO
type CreateMediaConcatTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
ConcatTemplate *ConcatTemplate `xml:"ConcatTemplate,omitempty"`
}
// CreateMediaVideoProcessTemplateOptions TODO
type CreateMediaVideoProcessTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
ColorEnhance *ColorEnhance `xml:"ColorEnhance,omitempty"`
MsSharpen *MsSharpen `xml:"MsSharpen,omitempty"`
}
// CreateMediaVideoMontageTemplateOptions TODO
type CreateMediaVideoMontageTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
Duration string `xml:"Duration,omitempty"`
Container *Container `xml:"Container,omitempty"`
Video *Video `xml:"Video,omitempty"`
Audio *Audio `xml:"Audio,omitempty"`
AudioMix *AudioMix `xml:"AudioMix,omitempty"`
}
// CreateMediaVoiceSeparateTemplateOptions TODO
type CreateMediaVoiceSeparateTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
AudioMode string `xml:"AudioMode,omitempty"`
AudioConfig *AudioConfig `xml:"AudioConfig,omitempty"`
}
// CreateMediaSuperResolutionTemplateOptions TODO
type CreateMediaSuperResolutionTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
Resolution string `xml:"Resolution,omitempty"` // sdtohd、hdto4k
EnableScaleUp string `xml:"EnableScaleUp,omitempty"`
Version string `xml:"Version,omitempty"`
}
// CreateMediaPicProcessTemplateOptions TODO
type CreateMediaPicProcessTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
PicProcess *PicProcess `xml:"PicProcess,omitempty"`
}
// CreateMediaWatermarkTemplateOptions TODO
type CreateMediaWatermarkTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
Watermark *Watermark `xml:"Watermark,omitempty"`
}
// CreateMediaTranscodeProTemplateOptions TODO
type CreateMediaTranscodeProTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
Container *Container `xml:"Container,omitempty"`
Video *TranscodeProVideo `xml:"Video,omitempty"`
Audio *TranscodeProAudio `xml:"Audio,omitempty"`
TimeInterval *TimeInterval `xml:"TimeInterval,omitempty"`
TransConfig *TransConfig `xml:"TransConfig,omitempty"`
}
// CreateMediaTtsTemplateOptions TODO
type CreateMediaTtsTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
Mode string `xml:"Mode,omitempty"`
Codec string `xml:"Codec,omitempty"`
VoiceType string `xml:"VoiceType,omitempty"`
Volume string `xml:"Volume,omitempty"`
Speed string `xml:"Speed,omitempty"`
}
// CreateMediaSmartcoverTemplateOptions TODO
type CreateMediaSmartCoverTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
SmartCover *NodeSmartCover `xml:"SmartCover,omitempty" json:"SmartCover,omitempty"`
}
// CreateMediaSpeechRecognitionTemplateOptions TODO
type CreateMediaSpeechRecognitionTemplateOptions struct {
XMLName xml.Name `xml:"Request"`
Tag string `xml:"Tag,omitempty"`
Name string `xml:"Name,omitempty"`
SpeechRecognition *SpeechRecognition `xml:"SpeechRecognition,omitempty" json:"SpeechRecognition,omitempty"`
}
// CreateMediaTemplateResult TODO
type CreateMediaTemplateResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
Template *Template `xml:"Template,omitempty"`
}
// Template TODO
type Template struct {
TemplateId string `xml:"TemplateId,omitempty"`
Tag string `xml:"Code,omitempty"`
Name string `xml:"Name,omitempty"`
TransTpl *Transcode `xml:"TransTpl,omitempty"`
CreateTime string `xml:"CreateTime,omitempty"`
UpdateTime string `xml:"UpdateTime,omitempty"`
BucketId string `xml:"BucketId,omitempty"`
Category string `xml:"Category,omitempty"`
Snapshot *Snapshot `xml:"Snapshot,omitempty"`
Animation *Animation `xml:"Animation,omitempty"`
ConcatTemplate *ConcatTemplate `xml:"ConcatTemplate,omitempty"`
VideoProcess *VideoProcess `xml:"VideoProcess,omitempty"`
VideoMontage *VideoMontage `xml:"VideoMontage,omitempty"`
VoiceSeparate *VoiceSeparate `xml:"VoiceSeparate,omitempty"`
SuperResolution *SuperResolution `xml:"SuperResolution,omitempty"`
PicProcess *PicProcess `xml:"PicProcess,omitempty"`
Watermark *Watermark `xml:"Watermark,omitempty"`
TransProTpl *Transcode `xml:"TransProTpl,omitempty"`
TtsTpl *TtsTpl `xml:"TtsTpl,omitempty"`
SmartCover *NodeSmartCover `xml:"SmartCover,omitempty" json:"SmartCover,omitempty"`
SpeechRecognition *SpeechRecognition `xml:"SpeechRecognition,omitempty" json:"SpeechRecognition,omitempty"`
}
// CreateMediaSnapshotTemplate 创建截图模板
func (s *CIService) CreateMediaSnapshotTemplate(ctx context.Context, opt *CreateMediaSnapshotTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaSnapshotTemplate 更新截图模板
func (s *CIService) UpdateMediaSnapshotTemplate(ctx context.Context, opt *CreateMediaSnapshotTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaTranscodeTemplate Options 创建转码模板
func (s *CIService) CreateMediaTranscodeTemplate(ctx context.Context, opt *CreateMediaTranscodeTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaTranscodeTemplate 更新转码模板
func (s *CIService) UpdateMediaTranscodeTemplate(ctx context.Context, opt *CreateMediaTranscodeTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaAnimationTemplate 创建动图模板
func (s *CIService) CreateMediaAnimationTemplate(ctx context.Context, opt *CreateMediaAnimationTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaAnimationTemplate 更新动图模板
func (s *CIService) UpdateMediaAnimationTemplate(ctx context.Context, opt *CreateMediaAnimationTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaConcatTemplate 创建拼接模板
func (s *CIService) CreateMediaConcatTemplate(ctx context.Context, opt *CreateMediaConcatTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaConcatTemplate 更新拼接模板
func (s *CIService) UpdateMediaConcatTemplate(ctx context.Context, opt *CreateMediaConcatTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaVideoProcessTemplate 创建视频增强模板
func (s *CIService) CreateMediaVideoProcessTemplate(ctx context.Context, opt *CreateMediaVideoProcessTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaVideoProcessTemplate 更新视频增强模板
func (s *CIService) UpdateMediaVideoProcessTemplate(ctx context.Context, opt *CreateMediaVideoProcessTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaVideoMontageTemplate 创建精彩集锦模板
func (s *CIService) CreateMediaVideoMontageTemplate(ctx context.Context, opt *CreateMediaVideoMontageTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaVideoMontageTemplate 更新精彩集锦模板
func (s *CIService) UpdateMediaVideoMontageTemplate(ctx context.Context, opt *CreateMediaVideoMontageTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaVoiceSeparateTemplate 创建人声分离模板
func (s *CIService) CreateMediaVoiceSeparateTemplate(ctx context.Context, opt *CreateMediaVoiceSeparateTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaVoiceSeparateTemplate 更新人声分离模板
func (s *CIService) UpdateMediaVoiceSeparateTemplate(ctx context.Context, opt *CreateMediaVoiceSeparateTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaSuperResolutionTemplate 创建超级分辨率模板
func (s *CIService) CreateMediaSuperResolutionTemplate(ctx context.Context, opt *CreateMediaSuperResolutionTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaSuperResolutionTemplate 更新超级分辨率模板
func (s *CIService) UpdateMediaSuperResolutionTemplate(ctx context.Context, opt *CreateMediaSuperResolutionTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaPicProcessTemplate 创建图片处理模板
func (s *CIService) CreateMediaPicProcessTemplate(ctx context.Context, opt *CreateMediaPicProcessTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaPicProcessTemplate 更新图片处理模板
func (s *CIService) UpdateMediaPicProcessTemplate(ctx context.Context, opt *CreateMediaPicProcessTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaWatermarkTemplate 创建水印模板
func (s *CIService) CreateMediaWatermarkTemplate(ctx context.Context, opt *CreateMediaWatermarkTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaWatermarkTemplate 更新水印模板
func (s *CIService) UpdateMediaWatermarkTemplate(ctx context.Context, opt *CreateMediaWatermarkTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaTranscodeProTemplate 创建广电转码模板
func (s *CIService) CreateMediaTranscodeProTemplate(ctx context.Context, opt *CreateMediaTranscodeProTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaTranscodeProTemplate 更新广电转码模板
func (s *CIService) UpdateMediaTranscodeProTemplate(ctx context.Context, opt *CreateMediaTranscodeProTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaTtsTemplate 创建语音合成模板
func (s *CIService) CreateMediaTtsTemplate(ctx context.Context, opt *CreateMediaTtsTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaTtsTemplate 更新语音合成模板
func (s *CIService) UpdateMediaTtsTemplate(ctx context.Context, opt *CreateMediaTtsTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaTtsTemplate 创建智能封面模板
func (s *CIService) CreateMediaSmartCoverTemplate(ctx context.Context, opt *CreateMediaSmartCoverTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaTtsTemplate 更新智能封面模板
func (s *CIService) UpdateMediaSmartCoverTemplate(ctx context.Context, opt *CreateMediaSmartCoverTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CreateMediaTtsTemplate 创建语音识别模板
func (s *CIService) CreateMediaSpeechRecognitionTemplate(ctx context.Context, opt *CreateMediaSpeechRecognitionTemplateOptions) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaTtsTemplate 更新语音识别模板
func (s *CIService) UpdateMediaSpeechRecognitionTemplate(ctx context.Context, opt *CreateMediaSpeechRecognitionTemplateOptions, templateId string) (*CreateMediaTemplateResult, *Response, error) {
var res CreateMediaTemplateResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/template/" + templateId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// MediaWorkflow TODO
type MediaWorkflow struct {
Name string `xml:"Name,omitempty"`
WorkflowId string `xml:"WorkflowId,omitempty"`
State string `xml:"State,omitempty"`
Topology *Topology `xml:"Topology,omitempty"`
CreateTime string `xml:"CreateTime,omitempty"`
UpdateTime string `xml:"UpdateTime,omitempty"`
BucketId string `xml:"BucketId,omitempty"`
}
// MarshalXML TODO
func (m *CreateMediaWorkflowOptions) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
if m == nil {
return nil
}
type xmlMapEntry struct {
XMLName xml.Name
Type string `xml:"Type"`
Input interface{} `xml:",innerxml"`
Operation interface{} `xml:",innerxml"`
}
tokens := []xml.Token{}
tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "Request"}})
tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "MediaWorkflow"}})
t := xml.StartElement{Name: xml.Name{Local: "Name"}}
tokens = append(tokens, t, xml.CharData(m.MediaWorkflow.Name), xml.EndElement{Name: t.Name})
t = xml.StartElement{Name: xml.Name{Local: "State"}}
tokens = append(tokens, t, xml.CharData(m.MediaWorkflow.State), xml.EndElement{Name: t.Name})
tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "Topology"}})
tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "Dependencies"}})
for key, value := range m.MediaWorkflow.Topology.Dependencies {
t := xml.StartElement{Name: xml.Name{Local: key}}
tokens = append(tokens, t, xml.CharData(value), xml.EndElement{Name: t.Name})
}
tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "Dependencies"}})
// Nodes
tokens = append(tokens, xml.StartElement{Name: xml.Name{Local: "Nodes"}})
for _, t := range tokens {
err := e.EncodeToken(t)
if err != nil {
return err
}
}
tokens = tokens[:0]
for k, v := range m.MediaWorkflow.Topology.Nodes {
e.Encode(xmlMapEntry{XMLName: xml.Name{Local: k}, Type: v.Type, Input: v.Input, Operation: v.Operation})
}
tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "Nodes"}})
tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "Topology"}})
tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "MediaWorkflow"}})
tokens = append(tokens, xml.EndElement{Name: xml.Name{Local: "Request"}})
for _, t := range tokens {
err := e.EncodeToken(t)
if err != nil {
return err
}
}
return e.Flush()
}
// UnmarshalXML TODO
func (m *CreateMediaWorkflowOptions) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
var v struct {
XMLName xml.Name //`xml:"Topology"`
Dependencies struct {
Inner []byte `xml:",innerxml"`
} `xml:"Dependencies"`
Nodes struct {
Inner []byte `xml:",innerxml"`
} `xml:"Nodes"`
}
err := d.DecodeElement(&v, &start)
if err != nil {
return err
}
myMap := make(map[string]interface{})
// ... do the mxj magic here ... -
temp := v.Nodes.Inner
prefix := "<Nodes>"
postfix := "</Nodes>"
str := prefix + string(temp) + postfix
myMxjMap, _ := mxj.NewMapXml([]byte(str))
myMap, _ = myMxjMap["Nodes"].(map[string]interface{})
nodesMap := make(map[string]Node)
for k, v := range myMap {
var node Node
mapstructure.Decode(v, &node)
nodesMap[k] = node
}
// fill myMap
m.MediaWorkflow.Topology.Nodes = nodesMap
deps := make(map[string]interface{})
tep := "<Dependencies>" + string(v.Dependencies.Inner) + "</Dependencies>"
tepMxjMap, _ := mxj.NewMapXml([]byte(tep))
deps, _ = tepMxjMap["Dependencies"].(map[string]interface{})
depsString := make(map[string]string)
for k, v := range deps {
depsString[k] = v.(string)
}
m.MediaWorkflow.Topology.Dependencies = depsString
return nil
}
// CreateMediaWorkflowOptions TODO
type CreateMediaWorkflowOptions struct {
XMLName xml.Name `xml:"Request"`
MediaWorkflow *MediaWorkflow `xml:"MediaWorkflow,omitempty"`
}
// CreateMediaWorkflowResult TODO
type CreateMediaWorkflowResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
MediaWorkflow *MediaWorkflow `xml:"MediaWorkflow,omitempty"`
}
// CreateMediaWorkflow 创建工作流
func (s *CIService) CreateMediaWorkflow(ctx context.Context, opt *CreateMediaWorkflowOptions) (*CreateMediaWorkflowResult, *Response, error) {
var res CreateMediaWorkflowResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/workflow",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaWorkflow TODO
func (s *CIService) UpdateMediaWorkflow(ctx context.Context, opt *CreateMediaWorkflowOptions, workflowId string) (*CreateMediaWorkflowResult, *Response, error) {
var res CreateMediaWorkflowResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/workflow/" + workflowId,
method: http.MethodPut,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// UpdateMediaWorkflow TODO
func (s *CIService) ActiveMediaWorkflow(ctx context.Context, workflowId string) (*Response, error) {
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/workflow/" + workflowId + "?active",
method: http.MethodPut,
}
resp, err := s.client.send(ctx, &sendOpt)
return resp, err
}
// UpdateMediaWorkflow TODO
func (s *CIService) PausedMediaWorkflow(ctx context.Context, workflowId string) (*Response, error) {
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/workflow/" + workflowId + "?paused",
method: http.MethodPut,
}
resp, err := s.client.send(ctx, &sendOpt)
return resp, err
}
// DescribeMediaWorkflowOptions TODO
type DescribeMediaWorkflowOptions struct {
Ids string `url:"ids,omitempty"`
Name string `url:"name,omitempty"`
PageNumber int `url:"pageNumber,omitempty"`
PageSize int `url:"pageSize,omitempty"`
}
// DescribeMediaWorkflowResult TODO
type DescribeMediaWorkflowResult struct {
XMLName xml.Name `xml:"Response"`
MediaWorkflowList []MediaWorkflow `xml:"MediaWorkflowList,omitempty"`
RequestId string `xml:"RequestId,omitempty"`
TotalCount int `xml:"TotalCount,omitempty"`
PageNumber int `xml:"PageNumber,omitempty"`
PageSize int `xml:"PageSize,omitempty"`
NonExistIDs []string `xml:"NonExistIDs,omitempty"`
}
// DescribeMediaWorkflow 搜索工作流
func (s *CIService) DescribeMediaWorkflow(ctx context.Context, opt *DescribeMediaWorkflowOptions) (*DescribeMediaWorkflowResult, *Response, error) {
var res DescribeMediaWorkflowResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/Workflow",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DeleteMediaWorkflowResult TODO
type DeleteMediaWorkflowResult struct {
RequestId string `xml:"RequestId,omitempty"`
WorkflowId string `xml:"WorkflowId,omitempty"`
}
// DeleteMediaWorkflow 删除工作流
func (s *CIService) DeleteMediaWorkflow(ctx context.Context, workflowId string) (*DeleteMediaWorkflowResult, *Response, error) {
var res DeleteMediaWorkflowResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/Workflow/" + workflowId,
method: http.MethodDelete,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// InventoryTriggerJobInput TODO
type InventoryTriggerJobInput struct {
Manifest string `xml:"Manifest,omitempty"`
UrlFile string `xml:"UrlFile,omitempty"`
Prefix string `xml:"Prefix,omitempty"`
Object string `xml:"Object,omitempty"`
}
// InventoryTriggerJobOperationTimeInterval TODO
type InventoryTriggerJobOperationTimeInterval struct {
Start string `xml:"Start,omitempty"`
End string `xml:"End,omitempty"`
}
// InventoryTriggerJobOperation TODO
type InventoryTriggerJobOperation struct {
WorkflowIds string `xml:"WorkflowIds,omitempty"`
TimeInterval InventoryTriggerJobOperationTimeInterval `xml:"TimeInterval,omitempty"`
QueueId string `xml:"QueueId,omitempty"`
UserData string `xml:"UserData,omitempty"`
JobLevel int `xml:"JobLevel,omitempty"`
CallBackFormat string `xml:"CallBackFormat,omitempty"`
CallBackType string `xml:"CallBackType,omitempty"`
CallBack string `xml:"CallBack,omitempty"`
CallBackMqConfig *NotifyConfigCallBackMqConfig `xml:"CallBackMqConfig,omitempty"`
Tag string `xml:"Tag,omitempty"`
JobParam *InventoryTriggerJobOperationJobParam `xml:"JobParam,omitempty"`
Output *JobOutput `xml:"Output,omitempty"`
}
// InventoryTriggerJobOperationJobParam TODO
type InventoryTriggerJobOperationJobParam struct {
MediaResult *MediaResult `xml:"MediaResult,omitempty"`
MediaInfo *MediaInfo `xml:"MediaInfo,omitempty"`
Transcode *Transcode `xml:"Transcode,omitempty"`
Watermark []Watermark `xml:"Watermark,omitempty"`
TemplateId string `xml:"TemplateId,omitempty"`
WatermarkTemplateId []string `xml:"WatermarkTemplateId,omitempty"`
ConcatTemplate *ConcatTemplate `xml:"ConcatTemplate,omitempty"`
Snapshot *Snapshot `xml:"Snapshot,omitempty"`
Animation *Animation `xml:"Animation,omitempty"`
Segment *Segment `xml:"Segment,omitempty"`
VideoMontage *VideoMontage `xml:"VideoMontage,omitempty"`
VoiceSeparate *VoiceSeparate `xml:"VoiceSeparate,omitempty"`
VideoProcess *VideoProcess `xml:"VideoProcess,omitempty"`
TranscodeTemplateId string `xml:"TranscodeTemplateId,omitempty"` // 视频增强、超分、SDRtoHDR任务类型可以选择转码模板相关参数
SDRtoHDR *SDRtoHDR `xml:"SDRtoHDR,omitempty"`
SuperResolution *SuperResolution `xml:"SuperResolution,omitempty"`
DigitalWatermark *DigitalWatermark `xml:"DigitalWatermark,omitempty"`
ExtractDigitalWatermark *ExtractDigitalWatermark `xml:"ExtractDigitalWatermark,omitempty"`
VideoTag *VideoTag `xml:"VideoTag,omitempty"`
VideoTagResult *VideoTagResult `xml:"VideoTagResult,omitempty"`
SmartCover *NodeSmartCover `xml:"SmartCover,omitempty"`
QualityEstimate *QualityEstimate `xml:"QualityEstimate,omitempty"`
TtsTpl *TtsTpl `xml:"TtsTpl,omitempty"`
TtsConfig *TtsConfig `xml:"TtsConfig,omitempty"`
Translation *Translation `xml:"Translation,omitempty"`
WordsGeneralize *WordsGeneralize `xml:"WordsGeneralize,omitempty"`
WordsGeneralizeResult *WordsGeneralizeResult `xml:"WordsGeneralizeResult,omitempty"`
}
// InventoryTriggerJob TODO
type InventoryTriggerJob struct {
Name string `xml:"Name,omitempty"`
Input *InventoryTriggerJobInput `xml:"Input,omitempty"`
Operation *InventoryTriggerJobOperation `xml:"Operation,omitempty"`
}
// CreateInventoryTriggerJobOptions TODO
type CreateInventoryTriggerJobOptions struct {
XMLName xml.Name `xml:"Request"`
Name string `xml:"Name,omitempty"`
Type string `xml:"Type,omitempty"`
Input *InventoryTriggerJobInput `xml:"Input,omitempty"`
Operation *InventoryTriggerJobOperation `xml:"Operation,omitempty"`
}
// InventoryTriggerJobDetail TODO
type InventoryTriggerJobDetail struct {
Code string `xml:"Code,omitempty"`
Message string `xml:"Message,omitempty"`
JobId string `xml:"JobId,omitempty"`
Tag string `xml:"Tag,omitempty"`
Progress string `xml:"Progress,omitempty"`
State string `xml:"State,omitempty"`
CreationTime string `xml:"CreationTime,omitempty"`
StartTime string `xml:"StartTime,omitempty"`
EndTime string `xml:"EndTime,omitempty"`
QueueId string `xml:"QueueId,omitempty"`
Input *InventoryTriggerJobInput `xml:"Input,omitempty"`
Operation *InventoryTriggerJobOperation `xml:"Operation,omitempty"`
}
// CreateInventoryTriggerJobResult TODO
type CreateInventoryTriggerJobResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
JobsDetail *InventoryTriggerJobDetail `xml:"JobsDetail,omitempty"`
}
// CreateInventoryTriggerJob TODO
func (s *CIService) CreateInventoryTriggerJob(ctx context.Context, opt *CreateInventoryTriggerJobOptions) (*CreateInventoryTriggerJobResult, *Response, error) {
var res CreateInventoryTriggerJobResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/inventorytriggerjob",
method: http.MethodPost,
body: opt,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeInventoryTriggerJobResult TODO
type DescribeInventoryTriggerJobResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
JobsDetail *InventoryTriggerJobDetail `xml:"JobsDetail,omitempty"`
NonExistJobId string `xml:"NonExistJobId,omitempty"`
}
// DescribeInventoryTriggerJob 查询指定存量触发工作流的任务
func (s *CIService) DescribeInventoryTriggerJob(ctx context.Context, jobId string) (*DescribeInventoryTriggerJobResult, *Response, error) {
var res DescribeInventoryTriggerJobResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/inventorytriggerjob/" + jobId,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// DescribeInventoryTriggerJobsOptions TODO
type DescribeInventoryTriggerJobsOptions struct {
NextToken string `url:"nextToken,omitempty"`
Size string `url:"size,omitempty"`
OrderByTime string `url:"orderByTime,omitempty"`
States string `url:"states,omitempty"`
StartCreationTime string `url:"states,omitempty"`
EndCreationTime string `url:"endCreationTime,omitempty"`
WorkflowId string `url:"workflowId,omitempty"`
JobId string `url:"jobId,omitempty"`
Name string `url:"name,omitempty"`
}
// DescribeInventoryTriggerJobsResult TODO
type DescribeInventoryTriggerJobsResult struct {
XMLName xml.Name `xml:"Response"`
RequestId string `xml:"RequestId,omitempty"`
JobsDetail *InventoryTriggerJobDetail `xml:"JobsDetail,omitempty"`
NextToken string `xml:"NextToken,omitempty"`
}
// DescribeInventoryTriggerJobs 查询存量触发工作流的任务
func (s *CIService) DescribeInventoryTriggerJobs(ctx context.Context, opt *DescribeInventoryTriggerJobsOptions) (*DescribeInventoryTriggerJobsResult, *Response, error) {
var res DescribeInventoryTriggerJobsResult
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/inventorytriggerjob",
optQuery: opt,
method: http.MethodGet,
result: &res,
}
resp, err := s.client.send(ctx, &sendOpt)
return &res, resp, err
}
// CancelInventoryTriggerJob TODO
func (s *CIService) CancelInventoryTriggerJob(ctx context.Context, jobId string) (*Response, error) {
sendOpt := sendOptions{
baseURL: s.client.BaseURL.CIURL,
uri: "/inventorytriggerjob/" + jobId,
method: http.MethodPut,
}
resp, err := s.client.send(ctx, &sendOpt)
return resp, err
}