音视频处理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通知