Watermark水印
所有文档

          音视频处理 MCT

          Watermark水印

          数字水印是向数据多媒体(如图像、音频、视频信号等)中添加某些数字信息以达到文件真伪鉴别、版权保护等功能。嵌入的水印信息隐藏于宿主文件中,不影响原始文件的可观性和完整性。

          用户可以将BOS中的一个Object创建为水印,获得对应的watermarkId。然后在转码任务中将此水印添加到目的多媒体文件。

          创建水印

          如果需要创建一个水印, 指定水印的位置, 并获得水印的唯一ID,可以参考如下代码:

          public void createWaterMark(MediaClient client, String bucket, String key) {
              CreateWaterMarkResponse watermark = mediaClient.createWaterMark(bucket, key, "left", “top”);
              System.out.println("new watermarkId: " + watermark.getWatermarkId());
          }

          如果需要创建一个水印, 指定水印的位置、显示时间段、重复显示次数(动态水印)、自动缩放, 并获得水印的唯一ID,可以参考如下代码:

          public void createWaterMark(MediaClient client, String bucket, String key, 
                      String horizontalAlignment, String verticalAlignment, 
                      int horizontalOffsetInPixel, int verticalOffsetInPixel, 
                      Timeline timeline, Integer repeated, Boolean allowScaling) {
              CreateWaterMarkResponse watermark = mediaClient.createWaterMark(bucket, key, horizontalAlignment, 
                  verticalAlignment, timeline, repeated, allowScaling);
              System.out.println("new watermarkId: " + watermark.getWatermarkId());
          }

          接口返回的是包含了watermarkId的一个对象。

          创建水印的转码任务

          如果需要把水印添加到目标多媒体文件中,可以创建一个带水印的转码Preset,然后使用这个Preset创建转码任务。 可以设置Preset.watermarkId或Preset.watermarks,这里以设置Preset.watermarkId为例。

          public void createPreset(MediaClient client, String presetName, String description, String container,
                      Clip clip,Audio audio, Video video, Encryption encryption, String watermarkId) {
          
              client.createPreset(presetName, description, container, clip, audio, video, encryption, watermarkId);
          
              String jobId = client.createJob(pipelineName, sourceKey, targetKey, presetName).getJobId();
          }

          代码参考创建视频文件转码配置和[创建视频文件转码任务](MCT/服务端SDK/Java-SDK/Transcoding-Job转码任务.md#创建Transcoding Job)。

          查询指定水印

          如果需要查询已创建的水印,可以参考如下代码:

          public void getWaterMark(MediaClient client, String watermarkId) {
              GetWaterMarkResponse watermark = mediaClient.getWaterMark(watermarkId);
              System.out.println("watermarkId: " + watermark.getWatermarkId());
              System.out.println("createTime: " + watermark.getCreateTime());
              System.out.println("bucket: " + watermark.getBucket());
              System.out.println("key: " + watermark.getKey());
              System.out.println("horizontalOffsetInPixel: " + watermark.getHorizontalOffsetInPixel());
              System.out.println("verticalOffsetInPixel: " + watermark.getVerticalOffsetInPixel());
          }

          查询当前用户水印

          如果需要查询出本用户所创建的全部水印,可以参考如下代码:

          public void getWaterMark(MediaClient client) {
              List<WaterMark> watermarks = mediaClient.listWaterMark().getWatermarks();
              for (WaterMark watermark : watermarks) {
                  System.out.println("watermarkId = " + watermark.getWatermarkId());
                  System.out.println("bucket = " + watermark.getBucket());
                  System.out.println("key = " + watermark.getKey());
                  System.out.println("createTime = " + watermark.getCreateTime());
                  System.out.println("horizontalOffsetInPixel = " + watermark.getHorizontalOffsetInPixel());
                  System.out.println("VerticalOffsetInPixel = " + watermark.getVerticalOffsetInPixel());
                  System.out.println();
              }
          }

          删除水印

          如果需要删除某个已知watermarkId的水印,可以参考如下代码:

          public void getWaterMark(MediaClient client, String watermarkId) {
              client.deleteWaterMark(watermarkId);
          }
          上一篇
          Thumbnail-Job缩略图任务
          下一篇
          Notification通知