cos-js-sdk-v5
Version:
JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)
1,897 lines (1,828 loc) • 113 kB
JavaScript
var TaskId;
function request() {
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '1.png',
Method: 'POST',
Action: 'image_process',
Headers: {
// 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
'Pic-Operations':
'{"is_pic_info": 1, "rules": [{"fileid": "desample_photo.jpg", "rule": "imageMogr2/thumbnail/200x/"}]}',
},
},
function (err, data) {
logger.log('request:', err || data);
},
);
}
function getImageUrl() {
// 生成带图片处理参数的文件签名URL,过期时间设置为 30 分钟。
cos.getObjectUrl(
{
Bucket: config.Bucket,
Region: config.Region,
Key: '02.png',
Query: { 'imageMogr2/thumbnail/200x/': '' },
Expires: 1800,
Sign: true,
},
function (err, data) {
logger.log('getObjectUrl with sign: ', err || (data && data.Url));
},
);
// 生成带图片处理参数的文件URL,不带签名。
cos.getObjectUrl(
{
Bucket: config.Bucket,
Region: config.Region,
Key: 'photo.png',
QueryString: `imageMogr2/thumbnail/200x/`,
Sign: false,
},
function (err, data) {
logger.log('getObjectUrl without sign: ', err || (data && data.Url));
},
);
}
// 查询已经开通数据万象功能的存储桶
function describeMediaBuckets() {
const host = 'ci.' + config.Region + '.myqcloud.com';
const url = 'https://' + host + '/mediabucket';
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: 'mediabucket', // 固定值,必须
Url: url,
Query: {
pageNumber: '1', // 第几页,非必须
pageSize: '10', // 每页个数,非必须
// regions: 'ap-chengdu', // 地域信息,例如'ap-beijing',支持多个值用逗号分隔如'ap-shanghai,ap-beijing',非必须
// bucketNames: 'test-1250000000', // 存储桶名称,精确搜索,例如'test-1250000000',支持多个值用逗号分隔如'test1-1250000000,test2-1250000000',非必须
// bucketName: 'test', //存储桶名称前缀,前缀搜索,例如'test',支持多个值用逗号分隔如'test1,test2',非必须
},
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 搜索媒体处理队列
function searchMediaQueue() {
const key = `queue`; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
cos.request(
{
Method: 'GET', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Query: {
// 队列 ID,支持搜索多个,以“,”符号分割字符串,最多填10个。;是否必传:否
queueIds: '',
// 1. Active 表示队列内的作业会被媒体处理服务调度执行2. Paused 表示队列暂停,作业不再会被媒体处理调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;是否必传:否
state: 'Active',
// 1. CateAll:所有类型2. Transcoding:媒体处理队列3. SpeedTranscoding:媒体处理倍速转码队列4. 默认为 Transcoding;是否必传:否
category: 'CateAll',
// 第几页,默认值1;是否必传:否
pageNumber: '',
// 每页个数,默认值10;是否必传:否
pageSize: '',
},
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 更新媒体处理队列
function updateMediaQueue() {
const queueId = 'xxx'; // queueId: 要更新的队列id;
const key = `queue/${queueId}`; // queueId: 要更新的队列id;
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 队列名称,仅支持中文、英文、数字、_、-和*,长度不超过 128;限制:无;;是否必传:是
Name: 'queue-1',
// 1. Active 表示队列内的作业会被媒体处理服务调度执行2. Paused 表示队列暂停,作业不再会被媒体处理调度执行,队列内的所有作业状态维持在暂停状态,已经执行中的任务不受影响;限制:无;;是否必传:是
State: 'Paused',
// 回调配置;限制:无;;是否必传:是
NotifyConfig: {
// 回调开关OffOn;限制:Off;;是否必传:否
State: 'Off',
// 回调事件TaskFinish:任务完成WorkflowFinish:工作流完成;限制:无;;是否必传:否
Event: 'TaskFinish',
// 回调格式XMLJSON;限制:XML;;是否必传:否
ResultFormat: '',
// 回调类型UrlTDMQ;限制:无;;是否必传:否
Type: 'Url',
// 回调地址,不能为内网地址。;限制:无;;是否必传:否
Url: '',
// TDMQ 使用模式Topic:主题订阅Queue: 队列服务;限制:无;;是否必传:否
MqMode: '',
// TDMQ 所属园区,目前支持园区 sh(上海)、bj(北京)、gz(广州)、cd(成都)、hk(中国香港);限制:无;;是否必传:否
MqRegion: '',
// TDMQ 主题名称;限制:无;;是否必传:否
MqName: '',
},
},
});
cos.request(
{
Method: 'PUT', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 获取媒体文件信息同步请求
function getMediaInfo() {
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: 'test.mp4',
Query: {
'ci-process': 'videoinfo', // 固定值,必须
},
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
function postMediaInfo() {
const key = `jobs`; //
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:MediaInfo;是否必传:是
Tag: 'MediaInfo',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 获取媒体文件某个时间的截图
function getSnapshot() {
const key = 'test.mp4'; // ObjectKey: 存在cos的媒体文件路径,比如test.mp4
const host = `${config.Bucket}.cos.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
cos.request(
{
Method: 'GET', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Query: {
// 操作类型,固定使用 snapshot;是否必传:是
'ci-process': 'snapshot',
// 截图的时间点,单位为秒;是否必传:是
time: 1,
// 截图的宽。默认为0;是否必传:否
width: 0,
// 截图的高。默认为0;是否必传:否
height: 0,
// 截图的格式,支持 jpg 和 png,默认 jpg;是否必传:否
format: 'jpg',
// 图片旋转方式auto:按视频旋转信息进行自动���转off:不旋转默认值为 auto;是否必传:否
rotate: 'auto',
// 截帧方式keyframe:截取指定时间点之前的最近的一个关键帧exactframe:截取指定时间点的帧默认值为 exactframe;是否必传:否
mode: 'exactframe',
},
RawBody: true,
// 可选返回文件格式为blob
DataType: 'blob',
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Body);
}
},
);
}
// 获取私m3u8
function getPrivateM3U8() {
const key = '视频/peachtest.mp4.m3u8'; // ObjectKey: 存在cos的媒体文件路径,比如test.mp4
const host = `${config.Bucket}.cos.${config.Region}.myqcloud.com`;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET', // 固定值,必须
Key: key, // 必须
// Url: url, // 请求的url,必须
Query: {
// 操作类型,固定使用 pm3u8;是否必传:是
'ci-process': 'pm3u8',
// 私有 ts 资源 url 下载凭证的相对有效期,单位为秒,范围为[3600, 43200];是否必传:是
expires: 3600,
},
RawBody: true, // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Body);
}
},
);
}
// 音视频转码
function postTranscode() {
const key = `jobs`; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的Tag:Transcode;是否必传:是
Tag: 'Transcode',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// TemplateId与Transcode 二选一传入
// 转码模板 ID;是否必传:否,可通过控制台获取
TemplateId: 'xxx',
// 转码模板参数;是否必传:否
// Transcode: {},
// 水印模板 ID,可以传多个水印模板 ID,最多传3个;是否必传:否
// WatermarkTemplateId: '',
// 去除水印参数, H265、AV1编码暂不支持该参数;是否必传:否
// RemoveWatermark: {
// // 距离左上角原点 x 偏移,范围为[1, 4096];是否必传:是
// Dx: '',
// // 距离左上角原点 y 偏移,范围为[1, 4096];是否必传:是
// Dy: '',
// // 宽,范围为[1, 4096];是否必传:是
// Width: '',
// // 高,范围为[1, 4096];是否必传:是
// Height: '',
// },
// 字幕参数,H265、AV1编码和非mkv封装暂不支持该参数;是否必传:否
// Subtitles: {
// // 字幕参数;是否必传:是
// Subtitle: {
// // 同 bucket 的字幕地址,需要 encode;是否必传:是
// Url: '',
// },
// },
// 结果输出配置;是否必传:是
Output: {
// 存储桶的地域;是否必传:是
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/test.mp4',
},
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务所在的队列类型,限制为 SpeedTranscoding, 表示为开启倍速转码;是否必传:否
QueueType: 'SpeedTranscoding',
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 极速高清
function postExtremeHD() {
const key = `jobs`; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的Tag:Transcode;是否必传:是
Tag: 'Transcode',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// 极速高清转码模板 ID;是否必传:否,可通过控制台获取
TemplateId: 't0fc3f4eb75596459eb42b5fa52aa6e511',
// 水印模板 ID,可以传多个水印模板 ID,最多传3个;是否必传:否
// WatermarkTemplateId: '',
// 去除水印参数, H265、AV1编码暂不支持该参数;是否必传:否
// RemoveWatermark: {
// // 距离左上角原点 x 偏移,范围为[1, 4096];是否必传:是
// Dx: '',
// // 距离左上角原点 y 偏移,范围为[1, 4096];是否必传:是
// Dy: '',
// // 宽,范围为[1, 4096];是否必传:是
// Width: '',
// // 高,范围为[1, 4096];是否必传:是
// Height: '',
// },
// 字幕参数,H265、AV1编码和非mkv封装暂不支持该参数;是否必传:否
// Subtitles: {
// // 字幕参数;是否必传:是
// Subtitle: {
// // 同 bucket 的字幕地址,需要 encode;是否必传:是
// Url: '',
// },
// },
// 结果输出配置;是否必传:是
Output: {
// 存储桶的地域;是否必传:是
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/test.mp4',
},
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 音视频转封装
function postSegment() {
const key = `jobs`; // 固定值,必须
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:Segment;是否必传:是
Tag: 'Segment',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// 转封装参数;是否必传:是
Segment: {
// 封装格式,支持 aac、mp3、flac、mp4、ts、mkv、avi、hls、m3u8;是否必传:是
Format: 'mp4',
// 转封装时长单位:秒不小于5的整数不设置 Duration 时,表示只转封装格式不分段;是否必传:否
Duration: '5',
// 处理的流编号,对应媒体信息中的 Response.MediaInfo.Stream.Video.Index 和 Response.MediaInfo.Stream.Audio.Index,详见 获取媒体信息接口;是否必传:否
// TranscodeIndex: '',
// // hls 加密配置,当封装格式为 hls 和 m3u8 时生效;是否必传:否
// HlsEncrypt: {
// // 是否开启 HLS 加密,取值 true/false,默认值 false;是否必传:否
// IsHlsEncrypt: '',
// // HLS 加密的 key,当 IsHlsEncrypt 为 true 时,该参数才有意义;是否必传:否
// UriKey: '',
// },
// // 开始时间取值范围: [0,视频时长],默认值为0单位为秒支持 float 格式,执行精度精确到毫秒;是否必传:否
// StartTime: '',
// // 结束时间取值范围:[0, 视频时长],默认值为视频结束时间单位为秒支持 float 格式,执行精度精确到毫秒;是否必传:否
// EndTime: '',
},
// 结果输出配置;是否必传:是
Output: {
// 存储桶的地域;是否必传:是
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/out-${number}',
},
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 提交音视频拼接任务
function postConcat() {
const key = `jobs`; //
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:Concat;是否必传:是
Tag: 'Concat',
// 待操作的文件信息;是否必传:否
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// TemplateId与ConcatTemplate 二选一传入
// 转码模板 ID;是否必传:否,可通过控制台获取
TemplateId: 'xxx',
// 拼接参数;是否必传:否
// ConcatTemplate: {
// // 拼接节点,支持多个文件,按照文件顺序拼接;限制:否;;是否必传:否
// ConcatFragment: {
// // 同 bucket 对象地址,需要 urlEncode;限制:是;;是否必传:否
// Url: '',
// // 拼接对象的索引位置,大于等于0的整数;限制:否;;是否必传:否
// FragmentIndex: '',
// // 开始时间[0, 视频时长]单位为秒 当Request.Operation.ConcatTemplate.DirectConcat 为 true 时不生效;限制:否;;是否必传:否
// StartTime: '',
// // 结束时间[0, 视频时长]单位为秒 当 Request.Operation.ConcatTemplate.DirectConcat 为 true 时不生效;限制:否;;是否必传:否
// EndTime: '',
// },
// // Input 节点位于 ConcatFragment 序列索引,不能大于 ConcatFragment 长度;限制:否;;是否必传:否
// Index: '',
// // 简单拼接方式(不转码直接拼接),其他的视频和音频参数失效,取值 true/false;限制:否;;是否必传:否
// DirectConcat: '',
// },
// 结果输出配置;是否必传:是
Output: {
// 存储桶的地域;是否必传:是
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/out.mp4',
},
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 提交视频转动图
function postAnimation() {
const key = `jobs`; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:Animation;是否必传:是
Tag: 'Animation',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// TemplateId与Animation 二选一传入
// 转码模板 ID;是否必传:否,可通过控制台获取
TemplateId: 'xxx',
// 视频转动图参数;是否必传:否
// Animation: {},
// 结果输出配置;是否必传:是
Output: {
// 存储桶的地域;是否必传:是
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/out.${ext}',
},
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 提交视频截帧任务
function postSnapshot() {
const key = `jobs`; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:Snapshot;是否必传:是
Tag: 'Snapshot',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// 截帧模板 ID;是否必传:否,可通过控制台获取
TemplateId: 'xxx',
// 结果输出配置;是否必传:是
Output: {
// 存储桶的地域;是否必传:是
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/snapshot-${number}.jpg',
// 雪碧图的名字。当有多个输出文件时必须包含 ${number} 通配符。仅支持 jpg 格式;是否必传:否
SpriteObject: 'output/sprite-${number}.jpg',
},
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 提交精彩集锦任务
function postVideoMontage() {
const key = `jobs`; // 固定值,必须
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:VideoMontage;是否必传:是
Tag: 'VideoMontage',
// 待操作的文件信息;是否必传:是
Input: {
// Object与url二选一传递
// 同存储桶文件路径;是否必传:否
Object: 'test.mp4',
// 支持公网下载的Url;是否必传:否
// Url: '',
},
// 操作规则;是否必传:是
Operation: {
// 模板 ID;是否必传:否,可通过控制台获取
TemplateId: 'xxx',
// 结果输出配置;是否必传:是
Output: {
// 存储桶的地域;是否必传:是
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/out.mp4',
},
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 提交视频标签任务
function postVideoTag() {
const key = `jobs`; //
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:VideoTag;是否必传:是
Tag: 'VideoTag',
// 待操作的文件信息;是否必传:是
Input: {
// 执行视频标签任务的文件路径,目前支持 mp4、avi、mkv、wmv、rmvb、flv、mov 封装格式,视频时长超过30min的视频请 提交工单 处理;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// 任务参数;是否必传:是
VideoTag: {
// 场景类型,可选择视频标签的运用场景,不同的运用场景使用的算法、输入输出等都会有所差异。当前版本只支持 Stream 场景;是否必传:是
Scenario: 'Stream',
},
// 任务优先级,级别限制:0 、1 、2。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
// 透传用户信息;是否必传:否
UserData: '',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 提交智能封面任务
function postSmartCover() {
const key = `jobs`; //
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:SmartCover;是否必传:是
Tag: 'SmartCover',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// 智能封面模板id;是否必传:否,可通过控制台获取
TemplateId: 'xxx',
// 结果输出配置;是否必传:是
Output: {
// 存储桶的地域;是否必传:是
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/smartcover-${number}.jpg',
},
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为 0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 添加数字水印任务
function postDigitalWatermark() {
const key = `jobs`; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:DigitalWatermark;是否必传:是
Tag: 'DigitalWatermark',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
DigitalWatermark: {
Message: '123456', // 嵌入数字水印的水印信息;是否必传:是
Type: 'Text', // 数字水印类型;是否必传:是
Version: 'V1', // 数字水印版本;是否必传:是
IgnoreError: true, // 当添加水印失败是否忽略错误继续执行任务;是否必传:是
},
// 结果输出配置;是否必传:是
Output: {
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/output.mp4',
},
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 提取数字水印任务
function postExtractDigitalWatermark() {
const key = `jobs`; // 固定值,必须
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:ExtractDigitalWatermark;是否必传:是
Tag: 'ExtractDigitalWatermark',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: 'test.mp4',
},
// 操作规则;是否必传:是
Operation: {
// 提取数字水印配置;是否必传:是
ExtractDigitalWatermark: {
// 水印类型;限制:Text;;是否必传:是
Type: 'Text',
// 水印版本;限制:V1;;是否必传:是
Version: 'V1',
},
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
// 透传用户信息,可打印的 ASCII 码,长度不超过1024;是否必传:否
UserData: '',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data.Response);
}
},
);
}
// 提交图片异步处理任务
function postPicProcess() {
const key = `jobs`; // 固定值
const host = `${config.Bucket}.ci.${config.Region}.myqcloud.com`;
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
// 创建任务的 Tag:PicProcess;是否必传:是
Tag: 'PicProcess',
// 待操作的文件信息;是否必传:是
Input: {
// 文件路径;是否必传:是
Object: '1.jpg',
},
// 操作规则;是否必传:是
Operation: {
// 模板 ID;是否必传:否
TemplateId: 't1edc04f224ca64782840022cdc8fc3aa4',
// PicProcess: {},
// 结果输出配置;是否必传:是
Output: {
Region: config.Region,
// 存储结果的存储桶;是否必传:是
Bucket: config.Bucket,
// 输出结果的文件名;是否必传:是
Object: 'output/output.jpg',
},
// 透传用户信息, 可打印的 ASCII 码, 长度不超过1024;是否必传:否
UserData: '',
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否
JobLevel: '0',
},
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否
CallBackFormat: '',
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否
CallBackType: 'Url',
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否
CallBack: '',
},
});
cos.request(
{
Method: 'POST', // 固定值,必须
Key: key, // 必须
Url: url, // 请求的url,必须
Body: body, // 请求体参数,必须
ContentType: 'application/xml', // 固定值,必须
},
function (err, data) {
if (err) {
// 处理请求失败
console.log(err);
} else {
// 处理请求成功
console.log(data);
}
},
);
}
// 图片同步审核
function getImageAuditing() {
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '1.png',
Query: {
'ci-process': 'sensitive-content-recognition', // 固定值,必须
'biz-type': '', // 审核类型,非必须
'detect-url': '', // 审核任意公网可访问的图片链接,非必须
interval: 5, // 审核 GIF 动图时,每隔interval帧截取一帧,非必须
'max-frames': 5, // 审核 GIF 动图时,最大截帧数,非必须
'large-image-detect': '0', // 是否需要压缩图片后再审核,非必须
},
},
function (err, data) {
logger.log(err || data);
},
);
}
// 图片批量审核
function postImagesAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/image/auditing';
var body = COS.util.json2xml({
Request: {
Input: [
{
Object: '1.png',
},
{
Object: '6.png',
},
],
Conf: {
BizType: '',
},
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: 'image/auditing',
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询图片审核任务结果
function getImageAuditingResult() {
var jobId = 'si8263213daf3711eca0d1525400d88xxx'; // jobId可以通过图片批量审核返回
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/image/auditing/' + jobId;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/image/auditing/' + jobId,
Url: url,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 反馈处理结果
function reportBadCase() {
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const key = 'report/badcase';
const url = `https://${host}/${key}`;
const body = COS.util.json2xml({
Request: {
ContentType: 2,
Url: 'https://example.com/desample_photo.jpg',
Label: 'Porn',
SuggestedLabel: 'Normal',
// JobId: '',
// ModerationTime: '',
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: key,
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 提交视频审核任务
function postVideoAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/video/auditing';
var body = COS.util.json2xml({
Request: {
Input: {
Object: '1.mp4',
},
Conf: {
BizType: '',
Snapshot: {
Count: 1000, // 视频截帧数量
},
DetectContent: 1, // 是否审核视频声音,0-只审核视频不审核声音;1-审核视频+声音
},
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: '/video/auditing',
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询视频审核任务结果
function getVideoAuditingResult() {
var jobId = 'av14d9ca15af3a11eca0d6525400d88xxx'; // jobId可以通过提交视频审核任务返回
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/video/auditing/' + jobId;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/video/auditing/' + jobId,
Url: url,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 提交音频审核任务
function postAudioAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/audio/auditing';
var body = COS.util.json2xml({
Request: {
Input: {
Object: '1.mp3',
},
Conf: {
BizType: '',
},
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: '/audio/auditing',
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询音频审核任务结果
function getAudioAuditingResult() {
var jobId = 'sa0c28d41daff411ecb23352540078cxxx'; // jobId可以通过提交音频审核任务返回
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/audio/auditing/' + jobId;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/audio/auditing/' + jobId,
Url: url,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 提交文本审核任务
function postTextAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/text/auditing';
var body = COS.util.json2xml({
Request: {
Input: {
// Content: COS.util.encodeBase64('乳沟'), // 经过base64编码过的文本”乳沟“,查询结果同步返回
Object: '中文.txt', // 存在cos里的资源,审核结果异步返回,可以调用查询文本审核结果api查询
},
Conf: {
BizType: '',
},
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: '/text/auditing',
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询文本审核任务结果
function getTextAuditingResult() {
var jobId = 'st8d88c664aff511ecb23352540078cxxx'; // jobId可以通过提交文本审核任务返回(Input传入Object)
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/text/auditing/' + jobId;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/text/auditing/' + jobId,
Url: url,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 提交文档审核任务
function postDocumentAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/document/auditing';
var body = COS.util.json2xml({
Request: {
Input: {
Object: 'test.xlsx', // 存在cos里的资源,审核结果异步返回,可以调用查询文本审核结果api查询
},
Conf: {
BizType: '',
},
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: '/document/auditing',
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询文档审核任务结果
function getDocumentAuditingResult() {
var jobId = 'sd7815c21caff611eca12f525400d88xxx'; // jobId可以通过提交文档审核任务返回
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/document/auditing/' + jobId;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/document/auditing/' + jobId,
Url: url,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 提交网页审核任务
function postWebpageAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/webpage/auditing';
var body = COS.util.json2xml({
Request: {
Input: {
Url: 'https://cloud.tencent.com/', // 存在cos里的资源,审核结果异步返回,可以调用查询文本审核结果api查询
},
Conf: {
BizType: '',
},
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: '/webpage/auditing',
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询网页审核任务结果
function getWebpageAuditingResult() {
var jobId = 'shce868019aff611ecb1155254009a4xxx'; // jobId可以通过提交网页审核任务返回
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/webpage/auditing/' + jobId;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/webpage/auditing/' + jobId,
Url: url,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 提交直播审核任务
function postLiveAuditing() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/video/auditing';
var body = COS.util.json2xml({
Request: {
Type: 'live_video',
Input: {
Url: 'rtmp://example.com/live/123', // 需要审核的直播流播放地址
// DataId: '',
// UserInfo: {},
},
Conf: {
BizType: '766d07a7af937c26216c51db29793ea6',
// Callback: 'https://callback.com', // 回调地址,非必须
// CallbackType: 1, // 回调片段类型,非必须
},
},
});
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: '/video/auditing',
ContentType: 'application/xml',
Body: body,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 取消直播审核
function cancelLiveAuditing() {
const host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
const jobId = 'av8088af71359c11eeb17c525400941xxx';
const key = `video/cancel_auditing/${jobId}`;
const url = `https://${host}/${key}`;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'POST',
Url: url,
Key: key,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询直播审核任务结果
function getLiveAuditingResult() {
var jobId = 'av0ca69557bd6111ed904c5254009411xx'; // jobId可以通过提交直播审核任务返回
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com';
var url = 'https://' + host + '/video/auditing/' + jobId;
cos.request(
{
Bucket: config.Bucket,
Region: config.Region,
Method: 'GET',
Key: '/video/auditing/' + jobId,
Url: url,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询已经开通文档预览的存储桶
function describeDocProcessBuckets() {
var host = 'ci.' + config.Region + '.myqcloud.com/docbucket';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'docbucket',
Url: url,
Query: {
// regions: '', // 非必须,地域信息,以“,”分隔字符串,支持 All、ap-shanghai、ap-beijing
// bucketNames: '', // 非必须,存储桶名称,以“,”分隔,支持多个存储桶,精确搜索
// bucketName: '', // 非必须,存储桶名称前缀,前缀搜索
// pageNumber: 1, // 非必须,第几页
// pageSize: 10, // 非必须,每页个数
},
},
function (err, data) {
logger.log(err || data);
},
);
}
// 文档转码同步请求
function getDocPreview() {
cos.getObjectUrl(
{
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: '1/文档.docx',
Query: {
'ci-process': 'doc-preview', // 必须,数据万象处理能力,文档预览固定为 doc-preview
srcType: 'docx', // 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值
// page: '', // 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图
// dstType: '', // 非必须,转换输出目标文件类型
},
DataType: 'blob',
},
function (err, data) {
if (err) {
console.log(err);
} else {
// Body为转码后的内容 可展示在img里 比如
var body = data.Body;
// const url = URL.createObjectURL(body);
// const img = document.getElementById('image');
// img.src = url;
// 获取总页数(需要在跨域配置的Expose-Headers配置需要暴露出的头部 比如下方的X-Total-Page)
// 跨域配置可参考文档 https://cloud.tencent.com/document/product/436/13318
var totalPage = data.headers['X-Total-Page'];
}
},
);
}
// 查询文档转码队列
function describeDocProcessQueues() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'docqueue',
Url: url,
Query: {
// queueIds: '', // 非必须,队列 ID,以“,”符号分割字符串
// state: '', // 非必须,1=Active,2=Paused
// pageNumber: 1, // 非必须,第几页
// pageSize: 2, // 非必须,每页个数
},
},
function (err, data) {
logger.log(err || data);
},
);
}
// 更新文档预览队列
function updateDocProcessQueue() {
// 任务所在的队列 ID,请使用查询队列(https://cloud.tencent.com/document/product/460/46946)获取或前往万象控制台(https://cloud.tencent.com/document/product/460/46487)在存储桶中查询
var queueId = 'pa2e2c3d3fae042de909cafc16f1d801b'; // 替换成自己的队列id
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/docqueue/' + queueId;
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Name: 'queue-doc-process-1', // 替换成自己的队列name
QueueID: queueId,
State: 'Active',
NotifyConfig: {
State: 'Off',
},
},
});
cos.request(
{
Method: 'PUT',
Key: 'docqueue/' + queueId,
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
logger.log(err || data);
},
);
}
// 提交文档转码任务
function createDocProcessJobs() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: 'DocProcess',
Input: {
Object: '1/文档.docx', // 存在cos里的路径
},
Operation: {
DocProcess: {
TgtType: 'jpg',
},
Output: {
Bucket: config.Bucket,
Region: config.Region,
Object: '1/文档转码_${Number}.jpg', // 转码后存到cos的路径
},
},
},
});
cos.request(
{
Method: 'POST',
Key: 'doc_jobs',
Url: url,
Body: body,
ContentType: 'application/xml',
},
function (err, data) {
logger.log(err || data);
},
);
}
// 查询指定的文档预览任务
function describeDocProcessJob() {
var jobId = 'd87fbabd07b8611ed974b3f4b40648xxx'; // 替换成自己的jogId
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs/' + jobId;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'doc_jobs/' + jobId,
Url: url,
},
function (err, data) {
logger.log(err || data);
},
);
}
// 拉取符合条件的文档预览任务
function describeDocProcessJobs() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/doc_jobs';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: 'doc_jobs',
Url: url,
Query: {
tag: 'DocProcess',
},
},
function (err, data) {
logger.log(err || data);
},
);
}
// 文档转 HTML
function getDocHtmlUrl() {
cos.getObjectUrl(
{
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: '1/文档.docx',
Query: {
'ci-process': 'doc-preview', // 必须,数据万象处理能力,文档预览固定为 doc-preview
// srcType: '', // 非必须,源数据的后缀类型,当前文档转换根据 COS 对象的后缀名来确定源数据类型。当 COS 对象没有后缀名时,可以设置该值
// page: '', // 非必须,需转换的文档页码,默认从1开始计数;表格文件中 page 表示转换的第 X 个 sheet 的第 X 张图
dstType: 'html', // 非必须,转换输出目标文件类型
},
},
function (err, data) {
if (err) {
console.log(err);
} else {
// 使用浏览器打开url即可预览
var url = data.Url;
console.log(url);
}
},
);
}
// 识别图片标签
function getImageLabel() {
var key = '1/素材.jpeg';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: key,
Url: url,
Query: {
'ci-process': 'detect-label',
},
},
function (err, data) {
logger.log(err || data);
},
);
}
// 二维码识别(上传时识别)
function identifyQrcode_put() {
util.selectLocalFile(function (files) {
var file = files && files[0];
if (!file) return;
cos.putObject(
{
Bucket: config.Bucket, // Bucket 格式:test-1250000000
Region: config.Region,
Key: '1/上传二维码.png',
Body: file,
Headers: {
// 通过 imageMogr2 接口使用图片缩放功能:指定图片宽度为 200,宽度等比压缩
'Pic-Operations': '{"is_pic_info": 1, "rules": [{"fileid":"test.jpg","rule":" QRcode/cover/0"}]}',
},
onProgress: function (progressData) {
logger.log('onProgress', JSON.stringify(progressData));
},
},
function (err, data) {
logger.log('CIExample1:', err || data);
},
);
});
}
// 二维码识别(下载时识别)
function identifyQrcode_get() {
var key = '1/二维码图片.png';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: key,
Url: url,
Query: {
'ci-process': 'QRcode',
},
},
function (err, data) {
logger.log(err || data);
},
);
}
// 二维码生成
function generateQrcode() {
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com';
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: '',
Url: url,
Query: {
'ci-process': 'qrcode-generate', // 必须,对象存储处理能力,二维码生成参数为 qrcode-generate
'qrcode-content': '二维码文案', // 必须,可识别的二维码文本信息
// mode: 0, // 非必须,生成的二维码类型,可选值:0或1。0为二维码,1为条形码,默认值为0
width: 200, //必须,指定生成的二维码或条形码的宽度,高度会进行等比压缩
},
},
function (err, data) {
if (!err) {
// 获得二维码base64
var imgBase64 = data.Response.ResultImage;
// 比如可拼接前缀直接展示在img里
// document.querySelector('#img').src = 'data:image/jpg;base64,' + imgBase64;
}
},
);
}
// 图片文字识别
function ocr() {
var key = '1/素材.jpeg';
var host = config.Bucket + '.cos.' + config.Region + '.myqcloud.com/' + key;
var url = 'https://' + host;
cos.request(
{
Method: 'GET',
Key: key,
Url: url,
Query: {
'ci-process': 'OCR', // 必须,数据万象处理能力,图片文字识别固定为 OCR
// type: '', // 非必须,OCR 的识别类型
// 'language-type': '', // 非必须,type 值为 general 时有效,表示识别语言类型
// ispdf: false, // 非必须,type 值为 general、fast 时有效,表示是否开启 PDF 识别
// 'pdf-pagenumber': '', // 非必须,type 值为 general、fast 时有效,表示需要识别的 PDF 页面的对应页码
// isword: false, // 非必须,type 值为 general、accurate 时有效,表示识别后是否需要返回单字信息
// 'enable-word-polygon': false, // 非必须,type 值为 handwriting 时有效,表示是否开启单字的四点定位坐标输出
},
},
function (err, data) {
logger.log(err || data);
},
);
}
// 提交文件压缩任务
function postFileCompress() {
var host = config.Bucket + '.ci.' + config.Region + '.myqcloud.com/file_jobs';
var url = 'https://' + host;
var body = COS.util.json2xml({
Request: {
Tag: '