开发者社区> EdgePlus> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

视频点播开发者实战:视频水印的基本使用

简介: 视频添加水印,即指在视频的编解码过程中将图片、文字等信息压制到视频流中合并输出一个带图文水印的新的视频文件。通常在视频上添加企业、品牌Logo、电视台台标、用户ID或昵称等标志性信息,可用于宣示对视频的版权归属或品牌宣传。
+关注继续查看

简介

视频添加水印,即指在视频的编解码过程中将图片、文字等信息压制到视频流中合并输出一个带图文水印的新的视频文件。通常在视频上添加企业、品牌Logo、电视台台标、用户ID或昵称等标志性信息,可用于宣示对视频的版权归属或品牌宣传。

水印类型

视频点播支持三种水印类型:静态图片(png格式)、动态图片(gif、apng、mov视频)和文字水印。

  • 图片水印支持水印位置、尺寸等效果设置,
  • 文字水印支持字体颜色、字号、透明度、字体描边等效果设置。

说明:更多视频水印信息请参考 视频水印

水印的使用

说明:

1.上传水印文件

说明:

  • 文字水印没有文件这类资源数据,因此无需此步操作。

1.1 获取文件上传路径与凭证

调用 CreateUploadAttachedMedia 接口获取文件上传路径以及上传临时授权。

说明:

  • 需要将BusinessType设置为watermark、 MediaExt设置文件的真实格式,例如:png。

接口请求处理代码示例:

CreateUploadAttachedMediaRequest request = new CreateUploadAttachedMediaRequest();
    //上传水印文件设置watermark即可
    request.setBusinessType("watermark");
    //水印文件在本地的文件名称
    request.setFileName("watermark.png");
    //水印文件的扩展名(png、gif、apng、mov)
    request.setMediaExt("png");
    //水印文件对应的标题
    request.setTitle("水印文件");
    //水印文件存储的源站
    request.setStorageLocation("outin-40564284ef0511e8b2d300163e1403e7.oss-cn-shanghai.aliyuncs.com");
CreateUploadAttachedMediaResponse response = client.getAcsResponse(request);

接口将会返回文件上传的路径(UploadAddress)和临时授权(UploadAuth)信息,将UploadAddress和UploadAuth进行Base64Decode(解码后是JSONObject数据)。

文件存储路径信息有:Bucket(OSS存储bucket)、EndPoint(存储区域地址)、FileName(文件在点播存储的文件名称)。

文件上传授权信息有:AccessKeyId、AccessKeySecret、Expiration(授权的过期时间)、SecurityToken(安全令牌)。

说明:更多上传路径和凭证信息可参考 上传地址和凭证

返回参数处理代码示例:

// FileURL 需要用于水印添加接口作为参数传入
    String fileUrl = response.getFileURL();
    //获取文件的上传地址
    String uploadAddress = response.getUploadAddress();
    //获取文件上传时的临时授权
    String uploadAuth = response.getUploadAuth();
    //解析文件上传地址内容(需要先base64解码再转换成JSON)
    JSONObject address = JSON.parseObject(base64Decode(uploadAddress));
    //解析文件上传时的临时授权(需要先base64解码再转换成JSON)
    JSONObject auth = JSON.parseObject(base64Decode(uploadAuth));
    //OSS上传Endpoint
    String endpoint = (String) address.get("Endpoint");
    //OSS存储文件的bucket
    String bucket = (String) address.get("Bucket");
    //文件存储到OSS的名称
    String fileName = (String) address.get("FileName");
    //OSS上传的临时授权AK
    String accessKeyId = (String) auth.get("AccessKeyId");
    String accessKeySecrect = (String) auth.get("AccessKeySecret");
    //OSS上传token
    String securityToken = (String) auth.get("SecurityToken");

说明:更多接口调用代码示例请参考 CreateUploadAttachedMedia SDK示例。

1.2 上传水印文件

获取到上传路径与临时授权,则可以通过OSS上传水印文件。

上传水印文件部分代码示例:

File file = new File("/tmp/test.watermark.png");
    //上传水印文件
    OSSClient ossClient = new OSSClient(uploadEndpoint, ossAccessKeyId, ossAccessKeySecrect, ossToken);
    //将水印文件上传到OSS
    ossClient.putObject(bucket, fileName, file);
    //上传完成后务必关闭oss client
    ossClient.shutdown();

说明:更多OSS 相关代码示例请参考 OSS SDK示例。

2.添加水印信息

水印文件上传完成后,调用AddWatermark 接口 添加文字水印或图片水印信息。

接口请求处理代码示例:

AddWatermarkRequest request = new AddWatermarkRequest();
 //水印名称
 request.setName("test");
 //调用获取文件上传路径和凭证接口返回的FileURL
 String fileUrl = "http://out-ddddd.cn-shanghai.aliyuncs.com/watermark/ddasaaasa.png";
 //图片水印必传图片文件的oss文件地址,水印文件必须和视频在同一个区域,例如:华东2视频,水印文件必须存放在华东2
 request.setFileUrl(fileUrl);
 //文字水印:Text; 图片水印:Image
 request.setType("Image");
 //水印配置信息(构建水印配置信息方法,详细的构建逻辑请参考接口SDK示例。)
 JSONObject watermarkConfig = buildWatermarkConfig();
 request.setWatermarkConfig(watermarkConfig.toJSONString());
 AddWatermarkResponse response = client.getAcsResponse(request);

说明:更多详细代码示例请参考 AddWatermark SDK示例
调用水印添加接口完成后,水印信息已经创建完成。

3.添加转码配置

要将创建的水印信息关联到视频转码处理中,可调用AddTranscodeTemplateGroup 接口添加转码配置并指定需要使用到的水印信息ID。

接口请求处理代码示例:

添加转码配置

AddTranscodeTemplateGroupRequest request = new AddTranscodeTemplateGroupRequest();
    request.setName("测试水印水印");
    JSONArray transcodeTemplateList = buildTranscodeTemplateList();
  request.setTranscodeTemplateList(transcodeTemplateList.toJSONString());
    AddTranscodeTemplateGroupResponse response = client.getAcsResponse(request)

构建转码配置列表

public static JSONArray buildTranscodeTemplateList() {
    JSONArray transcodeTemplateList = new JSONArray();
    JSONObject transcodeTemplate = new JSONObject();
     //清晰度
    transcodeTemplate.put("Definition", "LD");
    //模板名称
    transcodeTemplate.put("TemplateName", "testtemplate");
    //视频流转码配置
    JSONObject video = new JSONObject();
    video.put("Width", 640);
    video.put("Bitrate", 400);
    //video.put("Fps", 25);
    video.put("Remove", false);
    video.put("Codec", "H.264");
    video.put("Gop", "250");
    transcodeTemplate.put("Video", video);

    //音频流转码配置
    JSONObject audio = new JSONObject();
    audio.put("Codec", "AAC");
    audio.put("Bitrate", "64");
    audio.put("Channels", "2");
    audio.put("Samplerate", "32000");
    transcodeTemplate.put("Audio", audio);

    //封装容器
    JSONObject container = new JSONObject();
    container.put("Format", "m3u8");
    transcodeTemplate.put("Container", container);

    //条件转码配置
    JSONObject transconfig = new JSONObject();
    transconfig.put("IsCheckReso", false);
    transconfig.put("IsCheckResoFail", false);
    transconfig.put("IsCheckVideoBitrate", false);
    transconfig.put("IsCheckVideoBitrateFail", false);
    transconfig.put("IsCheckAudioBitrate", false);
    transconfig.put("IsCheckAudioBitrateFail", false);
    transcodeTemplate.put("TransConfig", transconfig);

    //需要使用的水印ID(多水印关联),最多支持4个水印
    JSONArray watermarkIdList = new JSONArray();
    watermarkIdList.add("23ebea5c67a450d9b595a0156198821f");
    //USER_DEFAULT_WATERMARK 代表默认水印ID
    watermarkIdList.add("6aa9cf7ff1497799deece4578a55f5e4");
    transcodeTemplate.put("WatermarkIds", watermarkIdList);

   transcodeTemplateList.add(transcodeTemplate);
    return transcodeTemplateList;
  }

说明:更多详细代码示例请参考 AddTranscodeTemplateGroup SDK示例。

4.上传视频

创建完转码配置后,用户可以在上传视频时指定创建好的转码模板配置ID或者将创建好的转码配置设置成默认,这样转码流程会自动处理并添加水印。

说明:更多代码示例详细请参考上传SDK 示例

5.水印效果

单水印

1

多水印

2

文字水印

3

图文水印

4

阿里云开年Hi购季,视频直播、视频点播、CDN全线折扣,错过这次,再等一年!点击了解活动详情

image

image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
如何有效节省阿里云视频点播的使用成本
背景       视频,现在已经成为人们越来越喜欢的交流和沟通方式,各种点播、直播平台、短视频APP层出不穷,吸引了大量的用户群体,而对于视频行业来说,存储和分发是需要考虑的核心部分。如何保证视频存储的可靠性和安全性,视频分发的速度以及稳定性,是每一个视频行业的用户需要考虑的问题。
6065 0
【教程】教你如何使用阿里云视频点播
按上面的来,应该问题不大。但如果还有问题的话,下载附件中的代码,在这基础上再改改就行。
14836 0
阿里云点播,微信小程序对接阿里云视频点播
网上也有对于阿里云如何在微信小程序里使用,但是很不全,包括阿里云文档的最佳实践里。话不多说上代码了。upvideo(){ var aliOssParams = util.aliOssParams();//主要是获取上传阿里云的加密策略policy和签名signature;以及上传自己要上传到阿里云的地址,当然还有自己阿里云accessid。
7460 0
阿里云视频点播,真实格式验证
阿里云视频点播,js上传mp4格式的视频,怎么验证视频真实格式。 真实格式定义:.rmvb格式的视频,手动修改后缀名。
1336 0
阿里云视频点播转码多场景化最佳实践
在面对不同行业用户丰富的转码场景需求时,如何将用户偏向自身业务特性的定制化需求通用化、产品化并赋予给其他用户使用?这是点播转码一直在思考并努力去解决的,本文由阿里云视频点播技术团队张立磊撰写,讲述视频点播针对多种业务场景提供的适应多场景化的转码处理方案,如何实现将用户定制化的场景需求进行抽象提取,最终以适用于其他点播用户的同样或类似的业务场景需求。
4537 0
阿里云视频点播播放常见问题排查指南
本文由阿里云视频云高级开发工程师筱巶撰写,主要介绍视频点播播放的前置条件以及用户在使用过程中经常遇到的问题,便于用户快速的定位并解决播放相关的问题。
12348 0
一篇文章解读阿里云视频点播内容安全机制
如何保障视频内容的安全,不被盗链、非法下载和传播,是困扰众多企业已久的问题,特别是独播剧、在线教育、财经金融、行业培训等在线版权视频领域尤为迫切,处理不好会造成极为严重的经济损失,甚至法律风险。阿里云视频点播提供了完善的内容安全保护机制,可以满足不同业务场景的安全需求。
4204 0
玩转短视频?守护视频安全?AI智能提速?9.9元体验? 阿里云视频点播大招盘点
前言 随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用户的有效方法。 为了让更多用户可以快速拥有视频能力,阿里云视频点播(VoD)自从上线以来,不断迭代升级,已经全面覆盖点播业务场景,并支持定制化的开发需求。
4125 0
阿里云视频点播指定清晰度
因为播放器有记忆功能,发现该功能是由cookie来实现的。所以,就可以通过设定cookie值来达到指定清晰度的目的
3946 0
【视频点播】阿里云视频点播如何获取视频播放的URL
展示如何使用阿里云视频点播服务获取播放地址.
32171 0
+关注
EdgePlus
阿里云产品运营,专注边缘计算和视频云产品与技术传播
文章
问答
来源圈子
更多
+ 订阅
相关文档: 安全加速 SCDN PCDN CDN
文章排行榜
最热
最新
相关电子书
更多
K8s监控神器——TSDB for Prometheus的入门与实践
立即下载
互联网音视频点播业务云上实践
立即下载
HBase训练营-物联网时代的数据挑战V1
立即下载