全部产品
云市场

媒体处理

更新时间:2019-08-29 10:07:25

初始化客户端

使用前请先初始化客户端,参考 initVodClient 接口。

提交转码作业

接口参数和返回字段请参考 SubmitTranscodeJobs

  1. #include <stdio.h>
  2. #include <string>
  3. #include <map>
  4. #include <jsoncpp/json/json.h>
  5. #include "vod_sdk/openApiUtil.h"
  6. /**
  7. * 1、构建覆盖参数,目前只支持图片水印文件地址、文字水印的内容覆盖;
  8. * 2、需要替换的水印信息对应水印ID必须是关联在指定的模板ID(即TranscodeTemplateId)中;
  9. * 3、不支持通过媒体处理接口去增加一个没有关联上的水印
  10. * 注意:图片水印的文件存储源站需要和发起转码的视频存储源站一致
  11. */
  12. Json::Value buildOverrideParams() {
  13. Json::Value overrideParams;
  14. Json::Value watermarks;
  15. Json::Value watermark1;
  16. watermark1["WatermarkId"] = "2ea587477c5a1bc8b5742d7";
  17. //需要替换成对应图片水印文件的OSS地址,水印文件存储源站需要和视频存储源站一致
  18. watermark1["FileUrl"] = "https://outin-40564284ef05113e1403e7.oss-cn-shanghai.aliyuncs.com/watermarks/02A1B22DF25D46C3C725A4-6-2.png";
  19. watermarks.append(watermark1);
  20. //文字水印内容替换
  21. Json::Value watermark2;
  22. //模板上面关联需要替换内容的文字水印ID
  23. watermark2["WatermarkId"] = "d297ba31ac5242d2071bf7";
  24. //需要替换成对应的内容
  25. watermark2["Content"] = "用户ID:66666";
  26. watermarks.append(watermark2);
  27. overrideParams["Watermarks"] = watermarks;
  28. return overrideParams;
  29. }
  30. /**
  31. * 生成加密需要的秘钥,response中包含密文秘钥和明文秘钥,用户只需要将密文秘钥传递给点播即可
  32. * 注意:KeySpec 必须传递AES_128,且不能设置NumberOfBytes
  33. * @param serviceKey 点播提供生成秘钥的service key,在用户的秘钥管理服务中可看到描述为vod的加密key
  34. */
  35. string generateDataKey(string serviceKey) {
  36. string ciphertextBlob;
  37. /*此处需实现KMS获取密文秘钥,详情参考KMS产品-GenerateDataKey接口*/
  38. return ciphertextBlob;
  39. }
  40. /**
  41. * 构建HLS标准加密的配置信息
  42. */
  43. Json::Value buildEncryptConfig() {
  44. //点播给用户在KMS(秘钥管理服务)中的Service Key,可在用户秘钥管理服务对应的区域看到描述为vod的service key
  45. string serviceKey = "<您的Service Key>";
  46. //随机生成一个加密的秘钥,返回的response包含明文秘钥以及密文秘钥,
  47. //视频标准加密只需要传递密文秘钥即可
  48. string ciphertextBlob = generateDataKey(serviceKey);
  49. Json::Value encryptConfig;
  50. //解密接口地址,该参数需要将每次生成的密文秘钥与接口URL拼接生成,表示每个视频的解密的密文秘钥都不一样
  51. //至于Ciphertext这个解密接口参数的名称,用户可自行制定,这里只作为参考参数名称
  52. encryptConfig["DecryptKeyUri"] = "http://decrypt.demo.com/decrypt?Ciphertext=" + ciphertextBlob;
  53. //秘钥服务的类型,目前只支持KMS
  54. encryptConfig["KeyServiceType"] = "KMS";
  55. //密文秘钥
  56. encryptConfig["CipherText"] = ciphertextBlob;
  57. return encryptConfig;
  58. }
  59. /**
  60. * 提交媒体处理作业
  61. */
  62. VodApiResponse submitTranscodeJobs(VodCredential authInfo) {
  63. string apiName = "SubmitTranscodeJobs";
  64. map<string, string> args;
  65. //需要转码的视频ID
  66. args["VideoId"] = "34a6ca54f5c140eece85a289096d";
  67. //转码模板ID
  68. args["TemplateGroupId"] = "e8aa925a9798c630d30cd737d4";
  69. //构建需要替换的水印参数(只有需要替换水印相关信息才需要构建)
  70. //Json::Value overrideParams = buildOverrideParams();
  71. //覆盖参数,暂只支持水印部分参数替换(只有需要替换水印相关信息才需要传递)
  72. //args["OverrideParams"] = overrideParams.toStyledString();
  73. //构建标准加密配置参数(只有标准加密才需要构建)
  74. //Json::Value encryptConfig = buildEncryptConfig();
  75. //HLS标准加密配置(只有标准加密才需要传递)
  76. //args["EncryptConfig"] = encryptConfig.toStyledString();
  77. return getAcsResponse(authInfo, apiName, args);
  78. }
  79. /**
  80. * 以下为调用示例
  81. */
  82. void main() {
  83. VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
  84. VodApiResponse response = submitTranscodeJobs(authInfo);
  85. printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
  86. }

提交截图作业

接口参数和返回字段请参考 SubmitSnapshotJob

创建截图模板详细请参考 截图模板

  1. #include <stdio.h>
  2. #include <string>
  3. #include <map>
  4. #include <jsoncpp/json/json.h>
  5. #include "vod_sdk/openApiUtil.h"
  6. /**
  7. * 构建雪碧图截图配置
  8. * @return
  9. */
  10. Json::Value buildSnapshotTemplateConfig() {
  11. Json::Value spriteSnapshotConfig;
  12. spriteSnapshotConfig["CellWidth"] = "120";
  13. spriteSnapshotConfig["CellHeight"] = "68";
  14. spriteSnapshotConfig["Columns"] = "3";
  15. spriteSnapshotConfig["Lines"] = "10";
  16. spriteSnapshotConfig["Padding"] = "20";
  17. spriteSnapshotConfig["Margin"] = "50";
  18. //保留雪碧图原始图
  19. spriteSnapshotConfig["KeepCellPic"] = "keep";
  20. spriteSnapshotConfig["Color"] = "tomato";
  21. return spriteSnapshotConfig;
  22. }
  23. /**
  24. * 提交媒体截图处理作业调用函数
  25. */
  26. VodApiResponse submitSnapshotJob(VodCredential authInfo) {
  27. string apiName = "SubmitSnapshotJob";
  28. map<string, string> args;
  29. //需要截图的视频ID(推荐传递截图模板ID)
  30. args["VideoId"] = "4d237a8270084849bf42078761814069";
  31. //截图模板ID
  32. args["SnapshotTemplateId"] = "5d745e6b8baadf589e0702426cfc62c81";
  33. //如果设置了SnapshotTemplateId,会忽略下面参数
  34. args["Count"] = "50";
  35. args["SpecifiedOffsetTime"] = "0";
  36. args["Interval"] = "1";
  37. args["Width"] = "200";
  38. args["Height"] = "200";
  39. //雪碧图配置(如果需要)
  40. Json::Value spriteSnapshotConfig = buildSnapshotTemplateConfig();
  41. args["SpriteSnapshotConfig"] = spriteSnapshotConfig.toStyledString();
  42. return getAcsResponse(authInfo, apiName, args);
  43. }
  44. // 请求示例
  45. void main() {
  46. VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
  47. VodApiResponse response = submitSnapshotJob(authInfo);
  48. printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
  49. }

查询截图数据

接口参数和返回字段请参考 ListSnapshots

  1. #include <stdio.h>
  2. #include <string>
  3. #include <map>
  4. #include "vod_sdk/openApiUtil.h"
  5. /**
  6. * 查询截图数据
  7. */
  8. VodApiResponse listSnapshots(VodCredential authInfo) {
  9. string apiName = "ListSnapshots";
  10. map<string, string> args;
  11. //视频ID
  12. args["VideoId"] = "c86c0ceba97965352418";
  13. args["SnapshotType"] = "CoverSnapshot";
  14. args["PageNo"] = "1";
  15. args["PageSize"] = "20";
  16. return getAcsResponse(authInfo, apiName, args);
  17. }
  18. // 请求示例
  19. void main() {
  20. VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
  21. VodApiResponse response = listSnapshots(authInfo);
  22. printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
  23. }

导播台视频预处理

接口参数和返回字段请参考 SubmitPreprocessJobs

  1. #include <stdio.h>
  2. #include <string>
  3. #include <map>
  4. #include "vod_sdk/openApiUtil.h"
  5. /**
  6. * 导播台视频预处理
  7. */
  8. VodApiResponse submitPreprocessJobs(VodCredential authInfo) {
  9. string apiName = "SubmitPreprocessJobs";
  10. map<string, string> args;
  11. //视频ID
  12. args["VideoId"] = "c86c0ceba97965352418";
  13. args["PreprocessType"] = "PreprocessType";
  14. return getAcsResponse(authInfo, apiName, args);
  15. }
  16. // 请求示例
  17. void main() {
  18. VodCredential authInfo = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
  19. VodApiResponse response = submitPreprocessJobs(authInfo);
  20. printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
  21. }