全部产品
云市场

媒体处理

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

初始化客户端

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

提交转码作业-普通&阿里云加密

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

此示例代码为使用 普通转码(不加密)、阿里云视频加密 提交转码作业的示例。

  1. // 调用样例
  2. var client = initVodClient('<Your AccessKeyId>','<Your AccessKeySecret>');
  3. /**
  4. * 构建覆盖参数,目前只支持图片水印文件地址、文字水印的内容覆盖;如不使用可忽略
  5. * 需要替换的水印信息对应水印ID必须是关联在指定的转码模板组ID上(即TranscodeTemplateId)
  6. * 不支持通过媒体处理接口去增加一个没有关联上的水印
  7. */
  8. var overrideParams = {
  9. Watermarks: [{
  10. //模板上面关联需要替换的水印文件图片水印ID
  11. WatermarkId: 'WatermarkId1',
  12. //需要替换成对应图片水印文件的OSS地址,水印文件存储源站需要和视频存储源站一致
  13. FileUrl: 'https://sample.oss-cn-shanghai.aliyuncs.com/watermarks/sample.png'
  14. },{
  15. //模板上面关联需要替换内容的文字水印ID
  16. WatermarkId: 'WatermarkId2',
  17. //需要替换成对应的内容
  18. Content: '用户ID:66666'
  19. }]
  20. };
  21. client.request("SubmitTranscodeJobs", {
  22. VideoId: '34a6ca54f5c140eece85a289096d',
  23. TemplateGroupId: 'e8aa925a9798c630d30cd737d4',
  24. OverrideParams: JSON.stringify(overrideParams)
  25. }, {}).then(function (response) {
  26. if (response.TranscodeJobs && response.TranscodeJobs.TranscodeJob && response.TranscodeJobs.TranscodeJob.length > 0){
  27. for(var i=0; i<response.TranscodeJobs.TranscodeJob.length; i++){
  28. console.log('JobId = ' + response.TranscodeJobs.TranscodeJob[i].JobId);
  29. }
  30. }
  31. console.log('RequestId = ' + response.RequestId);
  32. }).catch(function (response) {
  33. console.log('ErrorCode = ' + response.data.Code);
  34. console.log('ErrorMessage = ' + response.data.Message);
  35. console.log('RequestId = ' + response.data.RequestId);
  36. });

提交转码作业-HLS标准加密

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

此示例代码为使用 HLS标准加密 提交转码作业的示例。

  1. // 调用样例
  2. var client = initVodClient('<Your AccessKeyId>','<Your AccessKeySecret>');
  3. /**
  4. * 提交媒体处理作业
  5. */
  6. function submitTranscodeJobs(overrideParams, encryptConfig) {
  7. var paras = {
  8. VideoId: '34a6ca54f5c140eece85a289096d',
  9. TemplateGroupId: 'e8aa925a9798c630d30cd737d4'
  10. };
  11. // 覆盖参数,暂只支持水印部分参数替换(只有需要替换水印相关信息才需要传递)
  12. if (!overrideParams){
  13. paras.OverrideParams = JSON.stringify(overrideParams);
  14. }
  15. // HLS标准加密配置(只有标准加密才需要传递)
  16. if (!encryptConfig){
  17. paras.EncryptConfig = JSON.stringify(encryptConfig);
  18. }
  19. client.request("SubmitTranscodeJobs", paras, {}).then(function (response) {
  20. console.log(response);
  21. if (response.TranscodeJobs && response.TranscodeJobs.TranscodeJob && response.TranscodeJobs.TranscodeJob.length > 0){
  22. for(var i=0; i<response.TranscodeJobs.TranscodeJob.length; i++){
  23. console.log('JobId = ' + response.TranscodeJobs.TranscodeJob[i].JobId);
  24. }
  25. }
  26. console.log('RequestId = ' + response.RequestId);
  27. }).catch(function (response) {
  28. console.log('ErrorCode = ' + response.data.Code);
  29. console.log('ErrorMessage = ' + response.data.Message);
  30. console.log('RequestId = ' + response.data.RequestId);
  31. });
  32. }
  33. /**
  34. * 生成加密需要的秘钥,response中包含密文秘钥和明文秘钥,用户只需要将密文秘钥传递给点播即可
  35. * 注意:KeySpec 必须传递AES_128,且不能设置NumberOfBytes
  36. */
  37. client.request("GenerateDataKey", {
  38. KeyId: 'KeyId', // 点播提供生成秘钥的service key,在用户的秘钥管理服务中可看到描述为vod的加密key
  39. KeySpec: 'AES_128'
  40. }, {}).then(function (response) {
  41. console.log('GenerateDataKey RequestId = ' + response.RequestId);
  42. var encryptConfig = {
  43. // 解密接口地址,该参数需要将每次生成的密文秘钥与接口URL拼接生成,表示每个视频的解密的密文秘钥都不一样
  44. // 至于Ciphertext这个解密接口参数的名称,用户可自行制定,这里只作为参考参数名称
  45. DecryptKeyUri: 'http://decrypt.demo.com/decrypt?Ciphertext=' + response.CiphertextBlob,
  46. // 秘钥服务的类型,目前只支持KMS
  47. KeyServiceType: 'KMS',
  48. // 密文秘钥
  49. CipherText: response.CiphertextBlob
  50. };
  51. /**
  52. * 构建覆盖参数,目前只支持图片水印文件地址、文字水印的内容覆盖;如不使用可忽略
  53. * 需要替换的水印信息对应水印ID必须是关联在指定的转码模板组ID上(即TemplateGroupId)
  54. * 不支持通过媒体处理接口去增加一个没有关联上的水印
  55. */
  56. var overrideParams = {
  57. Watermarks: [{
  58. //模板上面关联需要替换的水印文件图片水印ID
  59. WatermarkId: 'WatermarkId1',
  60. //需要替换成对应图片水印文件的OSS地址,水印文件存储源站需要和视频存储源站一致
  61. FileUrl: 'https://sample.oss-cn-shanghai.aliyuncs.com/watermarks/sample.png'
  62. },{
  63. //模板上面关联需要替换内容的文字水印ID
  64. WatermarkId: 'WatermarkId2',
  65. //需要替换成对应的内容
  66. Content: '用户ID:66666'
  67. }]
  68. };
  69. submitTranscodeJobs(overrideParams, encryptConfig);
  70. }).catch(function (response) {
  71. console.log('GenerateDataKey ErrorCode = ' + response.data.Code);
  72. console.log('GenerateDataKey ErrorMessage = ' + response.data.Message);
  73. console.log('GenerateDataKey RequestId = ' + response.data.RequestId);
  74. });

提交截图作业

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

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

  1. // 调用样例
  2. var client = initVodClient('<Your AccessKeyId>','<Your AccessKeySecret>');
  3. var spriteSnapshotConfig = {
  4. CellWidth: '120',
  5. CellHeight: '68',
  6. Columns: '3',
  7. Lines: '10',
  8. Padding: '20',
  9. Margin: '50',
  10. //保留雪碧图原始图
  11. KeepCellPic: 'keep',
  12. Color: 'tomato'
  13. };
  14. client.request("SubmitSnapshotJob", {
  15. VideoId: '52b440eabcc8ae1cbffcxxxxxx', // 需要截图的视频ID
  16. SnapshotTemplateId: '1111e6b8baadf589cbffcxxxxxx', // 截图模板ID
  17. //如果设置了SnapshotTemplateId,会忽略下面参数
  18. Count: 50,
  19. SpecifiedOffsetTime: 0,
  20. Interval: 1,
  21. Width: '200',
  22. Height: '200',
  23. SpriteSnapshotConfig: JSON.stringify(spriteSnapshotConfig)
  24. }, {}).then(function (response) {
  25. if (response.SnapshotJob){
  26. //任务ID
  27. console.log('JobId = ' + response.SnapshotJob.JobId);
  28. }
  29. console.log('RequestId = ' + response.RequestId);
  30. }).catch(function (response) {
  31. console.log('ErrorCode = ' + response.data.Code);
  32. console.log('ErrorMessage = ' + response.data.Message);
  33. console.log('RequestId = ' + response.data.RequestId);
  34. });

查询截图数据

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

  1. // 调用样例
  2. var client = initVodClient('<Your AccessKeyId>','<Your AccessKeySecret>');
  3. client.request("ListSnapshots", {
  4. VideoId: '1111121b52b440eabcc8ae1cbffxxxxx', //视频ID
  5. SnapshotType: 'CoverSnapshot', //截图类型
  6. PageNo: '1',
  7. PageSize: '20'
  8. }, {}).then(function (response) {
  9. if (response.MediaSnapshot && response.MediaSnapshot.Snapshots && response.MediaSnapshot.Snapshots.Snapshot){
  10. for (var i=0; i<response.MediaSnapshot.Snapshots.Snapshot.length; i++){
  11. //截图地址
  12. console.log('Url = ' + response.MediaSnapshot.Snapshots.Snapshot[i].Url);
  13. }
  14. }
  15. console.log('RequestId = ' + response.RequestId);
  16. }).catch(function (response) {
  17. console.log('ErrorCode = ' + response.data.Code);
  18. console.log('ErrorMessage = ' + response.data.Message);
  19. console.log('RequestId = ' + response.data.RequestId);
  20. });

导播台视频预处理

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

  1. // 调用样例
  2. var client = initVodClient('<Your AccessKeyId>','<Your AccessKeySecret>');
  3. client.request("SubmitPreprocessJobs", {
  4. VideoId: '111111192e8e48c1ad51f237cxxxxxxx', //视频ID
  5. PreprocessType: 'PreprocessType'
  6. }, {}).then(function (response) {
  7. if (response.PreprocessJobs && response.PreprocessJobs.PreprocessJob && response.PreprocessJobs.PreprocessJob.length > 0){
  8. for (var i=0; i<response.PreprocessJobs.PreprocessJob.length; i++){
  9. //任务ID
  10. console.log('JobId = ' + response.PreprocessJobs.PreprocessJob[i].JobId);
  11. }
  12. }
  13. console.log('RequestId = ' + response.RequestId);
  14. }).catch(function (response) {
  15. console.log('ErrorCode = ' + response.data.Code);
  16. console.log('ErrorMessage = ' + response.data.Message);
  17. console.log('RequestId = ' + response.data.RequestId);
  18. });