搜索本产品文档关键词
Watermark水印
所有文档
menu
没有找到结果,请重新输入

音视频处理 MCP

Watermark水印

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

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

创建水印

如果需要创建一个水印, 指定水印的位置, 并获得水印的唯一ID。其中bucket是水印文件所在bucket名称,key是水印文件在该bucket中的文件名。可以参考如下代码:

public void createWaterMark(MediaClient client, String bucket, String key) {
    CreateWaterMarkResponse watermark = client.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 = client.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 = client.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 = client.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通知