Watermark水印
更新时间:2023-04-23
数字水印是向数据多媒体(如图像、音频、视频信号等)中添加某些数字信息以达到文件真伪鉴别、版权保护等功能。嵌入的水印信息隐藏于宿主文件中,不影响原始文件的可观性和完整性。
用户可以将BOS中的一个Object创建为水印,获得对应的watermarkId。然后在转码任务中将此水印添加到目的多媒体文件。
创建水印
如果需要创建一个水印, 指定水印的位置, 并获得水印的唯一ID(其中bucket是水印文件所在bucket名称,key是水印文件在该bucket中的文件名),可以参考如下代码:
Go
1args := &api.CreateWaterMarkArgs{}
2args.Bucket = "go-test"
3args.Key = "01.jpg"
4args.HorizontalAlignment = "right"
5args.VerticalAlignment = "top"
6createWaterMarkResponse, err := MEDIA_CLIENT.CreateWaterMark(args)
7if err != nil {
8 fmt.Printf("create watermark job error: %+v\n", err)
9 return
10}
11fmt.Println("create watermark job success Id: ", createWaterMarkResponse.WatermarkId)
如果需要创建一个水印, 指定水印的位置、显示时间段、重复显示次数(动态水印)、自动缩放, 并获得水印的唯一ID,可以参考如下代码:
Go
1args := &api.CreateWaterMarkArgs{}
2args.Bucket = "go-test"
3args.Key = "01.jpg"
4args.HorizontalAlignment = "left"
5args.VerticalAlignment = "top"
6args.HorizontalOffsetInPixel = 20
7args.VerticalOffsetInPixel = 10
8timeline := &api.Timeline{}
9timeline.StartTimeInMillisecond = 1000
10timeline.DurationInMillisecond = 3000
11args.Timeline = timeline
12args.Repeated = 1
13args.AllowScaling = true
14createWaterMarkResponse, err := MEDIA_CLIENT.CreateWaterMark(args)
15if err != nil {
16 fmt.Printf("create watermark job error: %+v\n", err)
17 return
18}
19fmt.Println("create watermark job success Id: ", createWaterMarkResponse.WatermarkId)
查询指定水印
如果需要查询已创建的水印,可以参考如下代码:
Go
1waterMarkId := "wmk-xxx"
2response, err := MEDIA_CLIENT.GetWaterMark(waterMarkId)
3if err != nil {
4 fmt.Printf("get watermark job error: %+v\n", err)
5 return
6}
7fmt.Printf("get watermark job success: %+v\n", response)
查询当前用户水印
如果需要查询出本用户所创建的全部水印,可以参考如下代码:
Go
1response, err := MEDIA_CLIENT.ListWaterMark()
2if err != nil {
3 fmt.Printf("get watermark job error: %+v\n", err)
4 return
5}
6for _, watermark := range response.Watermarks {
7 fmt.Printf("watermark job: %+v\n", watermark)
8}
删除水印
如果需要删除某个已知watermarkId的水印,可以参考如下代码:
Go
1waterMarkId := "wmk-xxx"
2err := MEDIA_CLIENT.DeleteWaterMark(waterMarkId)
3if err != nil {
4 fmt.Printf("delete watermark job error: %+v\n", err)
5 return
6}
7fmt.Println("delete watermark success")