视频水印

本篇文档提供了C/C++ SDK视频水印模块相关功能的API调用示例。包含添加水印、修改水印、删除水印、查询水印、设置默认水印等。

初始化客户端

使用前请先初始化客户端,请参见初始化

添加水印

调用AddWatermark接口,完成添加水印功能。

接口参数和返回字段请参见AddWatermark。调用示例如下:

说明

#include <stdio.h>
#include <string>
#include <map>
#include <jsoncpp/json/json.h>
#include "vod_sdk/openApiUtil.h"

/**
 * 构建图片水印的配置数据,根据具体设置需求修改对应的参数值
 */
Json::Value buildImageWatermarkConfig() {
    Json::Value watermarkConfig;
    //水印的横向偏移距离
    watermarkConfig["Dx"] = "8";
    //水印的纵向偏移距离
    watermarkConfig["Dy"] = "8";
    //水印显示的宽
    watermarkConfig["Width"] = "55";
    //水印显示的高
    watermarkConfig["Height"] = "55";
    //水印显示的相对位置(左上、右上、左下、右下)
    watermarkConfig["ReferPos"] = "BottomRight";
    //水印显示的时间线(开始显示和结束显示时间)
    Json::Value timeline;
    //水印开始显示时间
    timeline["Start"] = "2";
    //水印结束显示时间
    timeline["Duration"] = "ToEND";
    watermarkConfig["Timeline"] = timeline;
    return watermarkConfig;
}

/**
 * 构建文字水印的配置数据,根据具体设置需求修改对应的参数值
 */
Json::Value buildTextWatermarkConfig() {
    Json::Value watermarkConfig;
    //文字水印显示的内容
    watermarkConfig["Content"] = "testwatermark";
    //文字水印的字体名称
    watermarkConfig["FontName"] = "SimSun";
    //文字水印的字体大小
    watermarkConfig["FontSize"] = "25";
    //文字水印的颜色(也可为RGB颜色取值,例如:#000000)
    watermarkConfig["FontColor"] = "Black";
    //文字水印的透明度
    watermarkConfig["FontAlpha"] = "0.2";
    //文字水印的字体描边颜色(也可为RGB颜色取值,例如:#ffffff)
    watermarkConfig["BorderColor"] = "White";
    //文字水印的描边宽度
    watermarkConfig["BorderWidth"] = "1";
    //文字水印距离视频画面上边的偏移距离
    watermarkConfig["Top"] = "20";
    //文字水印距离视频画面左边的偏移距离
    watermarkConfig["Left"] = "15";
    return watermarkConfig;
}

/**
 * 添加水印配置信息函数
 */
VodApiResponse addWatermark(VodCredential authInfo) {
    string apiName = "AddWatermark";
    map<string, string> args;
    //水印名称
    args["Name"] = "testaddwatermark";
    //获取水印文件在oss的URL
    string fileUrl = "http://test-bucket.oss-cn-shanghai.aliyuncs.com/watermark/test.png";
    //图片水印必传图片文件的oss文件地址,水印文件必须和视频在同一个区域,例如:华东2视频,水印文件必须存放在华东2
    args["FileUrl"] = fileUrl;
    //水印配置数据
    Json::Value watermarkConfig;
    //图片水印的位置配置数据
    watermarkConfig = buildImageWatermarkConfig();
    //文字水印的位置配置数据
    //watermarkConfig = buildTextWatermarkConfig();
    args["WatermarkConfig"] = watermarkConfig.toStyledString();
    //文字水印:Text; 图片水印:Image
    args["Type"] = "Image";
    return getAcsResponse(authInfo, apiName, args);
}

// 请求示例
void main() {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
    VodApiResponse response = addWatermark(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

修改水印

调用UpdateWatermark接口,完成修改水印功能。

接口参数和返回字段请参见UpdateWatermark。调用示例如下:

#include <stdio.h>
#include <string>
#include <map>
#include <jsoncpp/json/json.h>
#include "vod_sdk/openApiUtil.h"

/**
 * 构建图片水印的配置数据,根据具体设置需求修改对应的参数值
 */
Json::Value buildImageWatermarkConfig() {
    Json::Value watermarkConfig;
    //水印的横向偏移距离
    watermarkConfig["Dx"] = "8";
    //水印的纵向偏移距离
    watermarkConfig["Dy"] = "8";
    //水印显示的宽
    watermarkConfig["Width"] = "55";
    //水印显示的高
    watermarkConfig["Height"] = "55";
    //水印显示的相对位置(左上、右上、左下、右下)
    watermarkConfig["ReferPos"] = "BottomRight";
    //水印显示的时间线(开始显示和结束显示时间)
    Json::Value timeline;
    //水印开始显示时间
    timeline["Start"] = "2";
    //水印结束显示时间
    timeline["Duration"] = "ToEND";
    watermarkConfig["Timeline"] = timeline;
    return watermarkConfig;
}

/**
 * 构建文字水印的配置数据,根据具体设置需求修改对应的参数值
 */
Json::Value buildTextWatermarkConfig() {
    Json::Value watermarkConfig;
    //文字水印显示的内容
    watermarkConfig["Content"] = "testwatermark";
    //文字水印的字体名称
    watermarkConfig["FontName"] = "SimSun";
    //文字水印的字体大小
    watermarkConfig["FontSize"] = "25";
    //文字水印的颜色(也可为RGB颜色取值,例如:#000000)
    watermarkConfig["FontColor"] = "Black";
    //文字水印的透明度
    watermarkConfig["FontAlpha"] = "0.2";
    //文字水印的字体描边颜色(也可为RGB颜色取值,例如:#ffffff)
    watermarkConfig["BorderColor"] = "White";
    //文字水印的描边宽度
    watermarkConfig["BorderWidth"] = "1";
    //文字水印距离视频画面上边的偏移距离
    watermarkConfig["Top"] = "20";
    //文字水印距离视频画面左边的偏移距离
    watermarkConfig["Left"] = "15";
    return watermarkConfig;
}

/**
 * 修改水印配置信息函数
 * 注意:不支持图片文件地址的修改,如果更换请创建新的水印信息
 */
VodApiResponse updateWatermark(VodCredential authInfo) {
    string apiName = "UpdateWatermark";
    map<string, string> args;
    //需要更新配置信息的水印ID
    args["WatermarkId"] = "421ddddd4f6e734a526fd2e****;
    //水印配置数据
    Json::Value watermarkConfig;
    //图片水印的位置配置数据
    watermarkConfig = buildImageWatermarkConfig();
    //文字水印的位置配置数据
    //watermarkConfig = buildTextWatermarkConfig();
    args["WatermarkConfig"] = watermarkConfig.toStyledString();
    return getAcsResponse(authInfo, apiName, args);
}

// 请求示例
void main() {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
    VodApiResponse response = updateWatermark(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

删除水印

调用DeleteWatermark接口,完成删除水印功能。

接口参数和返回字段请参见DeleteWatermark。调用示例如下:

#include <stdio.h>
#include <string>
#include <map>
#include <jsoncpp/json/json.h>
#include "vod_sdk/openApiUtil.h"

/**
 *删除水印配置信息函数
 */
VodApiResponse deleteWatermark(VodCredential authInfo) {
    string apiName = "DeleteWatermark";
    map<string, string> args;
    args["WatermarkId"] = "53f9d796fad9d7b862b2e5****;
    return getAcsResponse(authInfo, apiName, args);
}

// 请求示例
void main() {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
    VodApiResponse response = deleteWatermark(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

查询水印列表

调用ListWatermark接口,完成查询水印列表功能。

接口参数和返回字段请参见ListWatermark。调用示例如下:

#include <stdio.h>
#include <string>
#include <map>
#include <jsoncpp/json/json.h>
#include "vod_sdk/openApiUtil.h"

/**
 * 查询水印配置信息列表函数
 */
VodApiResponse listWatermark(VodCredential authInfo) {
    string apiName = "ListWatermark";
    map<string, string> args;
    return getAcsResponse(authInfo, apiName, args);
}

// 请求示例
void main() {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
    VodApiResponse response = listWatermark(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

查询单个水印

调用GetWatermark接口,完成查询单个水印功能。

接口参数和返回字段请参见GetWatermark。调用示例如下:

#include <stdio.h>
#include <string>
#include <map>
#include <jsoncpp/json/json.h>
#include "vod_sdk/openApiUtil.h"

/**
 * 查询单个水印配置信息函数
 */
VodApiResponse getWatermark(VodCredential authInfo) {
    string apiName = "GetWatermark";
    map<string, string> args;
    args["WatermarkId"] = "96d4f6e734a526fd2****";
    return getAcsResponse(authInfo, apiName, args);
}

// 请求示例
void main() {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
    VodApiResponse response = getWatermark(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

设置默认水印

调用SetDefaultWatermark接口,完成设置默认水印功能。

接口参数和返回字段请参见SetDefaultWatermark。调用示例如下:

#include <stdio.h>
#include <string>
#include <map>
#include <jsoncpp/json/json.h>
#include "vod_sdk/openApiUtil.h"

/**
 * 设置默认水印配置信息函数
 */
VodApiResponse setDefaultWatermark(VodCredential authInfo) {
    string apiName = "SetDefaultWatermark";
    map<string, string> args;
    args["WatermarkId"] = "96d4f6e734a526fd2****";
    return getAcsResponse(authInfo, apiName, args);
}

// 请求示例
void main() {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
    VodApiResponse response = setDefaultWatermark(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}