全部产品
云市场

媒体处理

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

初始化客户端

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

提交转码作业

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

  1. use Kms\Request\V20160120 as kms;
  2. /**
  3. * 构建覆盖参数,目前只支持图片水印文件地址、文字水印的内容覆盖;如不使用可忽略
  4. * 需要替换的水印信息对应水印ID必须是关联在指定的转码模板组ID上(即TranscodeTemplateId)
  5. * 不支持通过媒体处理接口去增加一个没有关联上的水印
  6. */
  7. function buildOverrideParams() {
  8. $overrideParams = array();
  9. //以替换水印为例
  10. $watermarks = array();
  11. //替换图片水印文件
  12. $watermarks1 = array();
  13. $watermarks1["WatermarkId"] = "2ea587477c5a1bc8bxxxxx";
  14. $watermarks1["FileUrl"] = "https://outin-40564284ef05113e1403e7.oss-cn-shanghai.aliyuncs.com/watermarks/02A1B22DF25D46C3C725A4-6-2.png";
  15. $watermarks[] = $watermarks1;
  16. //替换文字水印
  17. $watermarks2 = array();
  18. $watermarks2["WatermarkId"] = "d297ba31ac5242d20xxxxx";
  19. $watermarks2["Content"] = "用户ID:66666";
  20. $watermarks[] = $watermarks2;
  21. $overrideParams["Watermarks"] = $watermarks;
  22. return json_encode($overrideParams);
  23. }
  24. /**
  25. * 生成HLS标准加密参数的可选配置,如不使用可忽略
  26. * 此时依赖KMS服务,需要安装KMS依赖包 aliyun-php-sdk-kms
  27. * 生成密钥API参考:https://help.aliyun.com/document_detail/28948.html
  28. */
  29. function buildEncryptConfig($client) {
  30. try {
  31. //随机生成一个加密的秘钥,返回的response包含明文秘钥以及密文秘钥,
  32. //视频标准加密只需要传递密文秘钥即可
  33. $request = new kms\GenerateDataKeyRequest();
  34. $request->setKeyId('<serviceKey>');
  35. $request->setKeySpec("AES_128");
  36. $response = $client->getAcsResponse($request);
  37. $encryptConfig = array();
  38. # 解密接口地址,该参数需要将每次生成的密文秘钥与接口URL拼接生成,表示每个视频的解密的密文秘钥都不一样;注意您需要自己部署解密服务
  39. $encryptConfig["DecryptKeyUri"] = "http://decrypt.demo.com/decrypt?Ciphertext=" + $response->getCiphertextBlob();
  40. //秘钥服务的类型,目前只支持KMS
  41. $encryptConfig["KeyServiceType"] = "KMS";
  42. # Ciphertext作为解密接口的参数名称,可自定义,此处只作为参考
  43. $encryptConfig["CipherText"] = $response->getCiphertextBlob();
  44. return json_encode($encryptConfig);
  45. } catch (Exception $e) {
  46. print $e->getMessage()."\n";
  47. return null;
  48. }
  49. }
  50. /**
  51. * 提交媒体处理作业
  52. */
  53. function submitTranscodeJobs($client) {
  54. $request = new vod\SubmitTranscodeJobsRequest();
  55. //需要转码的视频ID
  56. $request->setVideoId("6893fca9814640c8821efa523exxxxxx");
  57. //转码模板ID
  58. $request->setTemplateGroupId("44f915b63a2375a6121533c6b2xxxxxx");
  59. //构建需要替换的水印参数(只有需要替换水印相关信息才需要构建)
  60. $request->setOverrideParams(buildOverrideParams());
  61. //HLS标准加密配置(只有标准加密才需要传递)
  62. $request->setEncryptConfig(buildEncryptConfig($client));
  63. return $client->getAcsResponse($request);
  64. }
  65. /**
  66. * 以下为调用示例
  67. */
  68. try {
  69. $client = initVodClient("<AccessKeyId>", "<AccessKeySecret>");
  70. $result = submitTranscodeJobs($client);
  71. var_dump($result);
  72. } catch (Exception $e) {
  73. print $e->getMessage()."\n";
  74. }

提交截图作业

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

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

  1. /**
  2. * 构建雪碧图截图配置
  3. * @return
  4. */
  5. function buildSnapshotTemplateConfig() {
  6. $spriteSnapshotConfig = array();
  7. $spriteSnapshotConfig["CellWidth"] = "120";
  8. $spriteSnapshotConfig["CellHeight"] = "68";
  9. $spriteSnapshotConfig["Columns"] = "3";
  10. $spriteSnapshotConfig["Lines"] = "10";
  11. $spriteSnapshotConfig["Padding"] = "20";
  12. $spriteSnapshotConfig["Margin"] = "50";
  13. //保留雪碧图原始图
  14. $spriteSnapshotConfig["KeepCellPic"] = "keep";
  15. $spriteSnapshotConfig["Color"] = "tomato";
  16. return json_encode($spriteSnapshotConfig);
  17. }
  18. /**
  19. * 提交媒体截图处理作业调用函数
  20. */
  21. function submitSnapshotJob($client) {
  22. $request = new vod\SubmitSnapshotJobRequest();
  23. //需要截图的视频ID(推荐传递截图模板ID)
  24. $request->setVideoId("6893fca9814640c8821efa523exxxxx");
  25. //截图模板ID
  26. $request->setSnapshotTemplateId("44f915b63a2375a6121533c6b2xxxxx");
  27. //如果设置了SnapshotTemplateId,会忽略下面参数
  28. $request->setCount(50);
  29. $request->setSpecifiedOffsetTime(0);
  30. $request->setInterval(1);
  31. $request->setWidth("200");
  32. $request->setHeight("200");
  33. $request->setSpriteSnapshotConfig(buildSnapshotTemplateConfig());
  34. return $client->getAcsResponse($request);
  35. }
  36. /**
  37. * 以下为调用示例
  38. */
  39. try {
  40. $client = initVodClient("<AccessKeyId>", "<AccessKeySecret>");
  41. $result = submitSnapshotJob($client);
  42. var_dump($result);
  43. } catch (Exception $e) {
  44. print $e->getMessage()."\n";
  45. }

查询截图数据

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

  1. /**
  2. * 查询截图数据
  3. */
  4. function listSnapshots($client) {
  5. $request = new vod\ListSnapshotsRequest();
  6. //视频ID
  7. $request->setVideoId("6893fca9814640c8821efa523exxxxxx");
  8. ///截图类型
  9. $request->setSnapshotType("CoverSnapshot");
  10. // 翻页参数
  11. $request->setPageNo("1");
  12. $request->setPageSize("20");
  13. return $client->getAcsResponse($request);
  14. }
  15. /**
  16. * 以下为调用示例
  17. */
  18. try {
  19. $client = initVodClient("<AccessKeyId>", "<AccessKeySecret>");
  20. $result = listSnapshots($client);
  21. var_dump($result);
  22. } catch (Exception $e) {
  23. print $e->getMessage()."\n";
  24. }

导播台视频预处理

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

  1. /**
  2. * 导播台视频预处理
  3. */
  4. function submitPreprocessJobs($client) {
  5. $request = new vod\SubmitPreprocessJobsRequest();
  6. //视频ID
  7. $request->setVideoId("6893fca9814640c8821efa523exxxxxx");
  8. ///类型
  9. $request->setPreprocessType("PreprocessType");
  10. return $client->getAcsResponse($request);
  11. }
  12. /**
  13. * 以下为调用示例
  14. */
  15. try {
  16. $client = initVodClient("<AccessKeyId>", "<AccessKeySecret>");
  17. $result = submitPreprocessJobs($client);
  18. var_dump($result);
  19. } catch (Exception $e) {
  20. print $e->getMessage()."\n";
  21. }