日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

直播水印

更新時(shí)間:

直播水印功能可以給直播視頻添加水印,通過(guò)本文檔您可以了解如何實(shí)現(xiàn)直播水印功能。

應(yīng)用場(chǎng)景

版權(quán)保護(hù):水印是保護(hù)版權(quán)的一種常用措施,視頻直播服務(wù)提供了直播水印功能,可以對(duì)直播視頻添加水印。

廣告:在直播過(guò)程中,可以通過(guò)直播水印功能在視頻中打上廣告標(biāo)簽,比如優(yōu)惠活動(dòng)等信息。

前期準(zhǔn)備

  • 使用水印功能,需要準(zhǔn)備水印圖片。目前視頻直播只支持圖片水印,如果您有文字水印需求,可以將文字制作成PNG圖片形式(水印圖片支持JPG、PNG格式)。

  • 水印圖片URL地址。目前視頻直播只支持URL地址形式訪(fǎng)問(wèn)水印圖片,暫不支持直接上傳圖片,使用直播水印功能時(shí),請(qǐng)確保視頻直播服務(wù)能夠長(zhǎng)期有效地訪(fǎng)問(wèn)您的水印圖片。

功能配置

使用直播水印功能需要進(jìn)行功能配置,配置內(nèi)容分為水印模板水印規(guī)則兩部分。

水印模板:配置水印相關(guān)信息,包括水印在直播視頻中的位置,透明度,水印圖片地址等。

水印規(guī)則:配置水印應(yīng)用規(guī)則,包含AppName,StreamName,關(guān)聯(lián)水印模板。

配置水印模板

目前可以通過(guò)視頻直播控制臺(tái)以及API配置水印模板。

控制臺(tái)配置水印模板

  1. 登錄視頻直播控制臺(tái)

  2. 在左側(cè)導(dǎo)航欄選擇功能管理>直播水印,進(jìn)入直播水印頁(yè)面,選擇水印模板頁(yè)簽。

  3. 選擇待配置的播流域名。

  4. 單擊添加水印模板,配置水印模板。

    image

    您可以在預(yù)覽區(qū)域查看水印效果,通過(guò)調(diào)整預(yù)覽畫(huà)面尺寸、水印尺寸和位置等信息對(duì)實(shí)際效果進(jìn)行實(shí)時(shí)預(yù)覽。水印模板參數(shù)及說(shuō)明如下表所示。

    參數(shù)

    描述

    水印模板名稱(chēng)

    水印模板的名稱(chēng)。支持輸入中英文、數(shù)字、短劃線(xiàn)(-)、下劃線(xiàn)(_)符號(hào),長(zhǎng)度不超過(guò)30個(gè)字符。

    水印描述

    水印信息描述。支持輸入中英文、數(shù)字、字符,長(zhǎng)度不超過(guò)128個(gè)字符。

    水印素材

    輸入HTTP或HTTPS鏈接的水印圖片地址。

    建議水印圖片地址是OSS的HTTP永久有效地址或者長(zhǎng)期鑒權(quán)的有效地址。

    坐標(biāo)原點(diǎn)

    水印在輸出視頻畫(huà)面的大概位置,用于標(biāo)示水印初始位置,水印將根據(jù)此坐標(biāo)原點(diǎn)進(jìn)行偏移。取值:

    • 右上(默認(rèn)值)

    • 右下

    • 左上

    • 左下

    預(yù)覽畫(huà)面尺寸(寬x高)

    可以根據(jù)實(shí)際視頻信息輸入,預(yù)覽對(duì)應(yīng)的展示位置和效果。單位:像素。

    水印尺寸(寬x高)

    水印圖片的大小,寬度將根據(jù)高度自適應(yīng)。

    • 取值范圍:[0,4096]。

    • 單位:像素。

    水印水平偏移

    水印在輸出視頻畫(huà)面上水平偏移距離。

    • 取值范圍:[0,4096]。

    • 單位:像素。

    水印垂直偏移

    水印在輸出視頻畫(huà)面上垂直偏移距離。

    • 取值范圍:[0,4096]。

    • 單位:像素。

    透明度

    水印圖片的透明度,值越小越透明,100%代表不透明。

    • 取值范圍:[0,100]。

    • 單位:百分比。

  5. 單擊保存,完成水印模板配置。

  6. 添加水印模板成功后,會(huì)彈出添加水印規(guī)則提示框。您可以單擊立即添加,為此模板添加水印規(guī)則;如果您暫不需要添加水印規(guī)則,可以選擇稍后再說(shuō),后續(xù)添加。水印規(guī)則配置,請(qǐng)參見(jiàn)配置水印規(guī)則

    說(shuō)明

    水印模板配置完成后,需要再添加水印規(guī)則,并在水印規(guī)則中關(guān)聯(lián)水印模板,設(shè)置AppName、StreamName,且必須與直播推流地址的AppName、StreamName保持一致,重新推流后,播流中才能帶水印。

API配置水印模板

使用API配置水印模板時(shí),建議您結(jié)合控制臺(tái)進(jìn)行配置(水印模板參數(shù)設(shè)置較為復(fù)雜,控制臺(tái)配置水印模板可以使用可視化界面拖動(dòng)以及預(yù)覽水印位置)。

  1. 首先,您通過(guò)視頻直播控制臺(tái)添加一個(gè)水印模板。

  2. 完成各項(xiàng)參數(shù)配置后,查詢(xún)水印模板信息。

            //需要<>內(nèi)容替換成實(shí)際使用的值
            DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
            IAcsClient client = new DefaultAcsClient(profile);
            DescribeLiveStreamWatermarksRequest describeLiveStreamWatermarksRequest=new DescribeLiveStreamWatermarksRequest();
            describeLiveStreamWatermarksRequest.setDomain("<DomainName>");
            try {
                DescribeLiveStreamWatermarksResponse response = client.getAcsResponse(describeLiveStreamWatermarksRequest);
                System.out.println(new Gson().toJson(response));
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                System.out.println("ErrCode:" + e.getErrCode());
                System.out.println("ErrMsg:" + e.getErrMsg());
                System.out.println("RequestId:" + e.getRequestId());
            }
    說(shuō)明
    • 查詢(xún)水印模板列表支持根據(jù)模板ID或名稱(chēng)查詢(xún),詳情請(qǐng)參見(jiàn)DescribeLiveStreamWatermarks - 查詢(xún)水印模板列表API說(shuō)明。

    • 您可以將查詢(xún)出的水印模板信息在您的業(yè)務(wù)系統(tǒng)內(nèi)保存成模板。

  3. 添加水印模板配置。

            //需要<>內(nèi)容替換成實(shí)際使用的值
            DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
            IAcsClient client = new DefaultAcsClient(profile);
            AddLiveStreamWatermarkRequest addLiveStreamWatermarkRequest = new AddLiveStreamWatermarkRequest();
            addLiveStreamWatermarkRequest.setType(0);
            addLiveStreamWatermarkRequest.setName("<WatermarkName>");
            addLiveStreamWatermarkRequest.setDescription("<Description>");
            addLiveStreamWatermarkRequest.setRefWidth(<1920>);
            addLiveStreamWatermarkRequest.setRefHeight(<1080>);
            addLiveStreamWatermarkRequest.setOffsetCorner("<TopRight>");
            addLiveStreamWatermarkRequest.setXOffset(<50.0>);
            addLiveStreamWatermarkRequest.setYOffset(<100.0>);
            addLiveStreamWatermarkRequest.setHeight(<200>);
            addLiveStreamWatermarkRequest.setTransparency(<255>);
            addLiveStreamWatermarkRequest.setPictureUrl("<PictureUrl>");
            addLiveStreamWatermarkRequest.setDomain("<DomainName>");
    
            try {
                AddLiveStreamWatermarkResponse addLiveStreamWatermarkResponse = client.getAcsResponse(addLiveStreamWatermarkRequest);
                System.out.println(new Gson().toJson(addLiveStreamWatermarkResponse));
            } catch (ServerException e) {
                e.printStackTrace();
            } catch (ClientException e) {
                System.out.println("ErrCode:" + e.getErrCode());
                System.out.println("ErrMsg:" + e.getErrMsg());
                System.out.println("RequestId:" + e.getRequestId());
            }
    

    說(shuō)明

    各參數(shù)說(shuō)明AddLiveStreamWatermark - 添加?印模板API。

    到此即完成水印模板配置,配置水印模板之后需要配置水印應(yīng)用規(guī)則。

重要
  • 直播水印暫不支持與直播時(shí)移同時(shí)配置使用。

配置水印規(guī)則

在配置水印模板之后,需要進(jìn)行水印規(guī)則配置。水印規(guī)則可以關(guān)聯(lián)水印模板。

水印規(guī)則同樣可以通過(guò)視頻直播控制臺(tái)以及API方式進(jìn)行配置。

控制臺(tái)配置水印規(guī)則

  1. 登錄視頻直播控制臺(tái)

  2. 在左側(cè)導(dǎo)航欄選擇功能管理>直播水印,進(jìn)入直播水印頁(yè)面,選擇水印規(guī)則頁(yè)簽。

  3. 選擇待配置的播流域名。

  4. 單擊添加水印規(guī)則

    image

    水印規(guī)則參數(shù)及說(shuō)明如下表所示:

    參數(shù)

    描述

    規(guī)則名稱(chēng)

    水印規(guī)則名稱(chēng)。支持輸入中英文、數(shù)字、字符,長(zhǎng)度不超過(guò)32個(gè)字符。

    規(guī)則描述

    水印規(guī)則描述。支持輸入中英文、數(shù)字、字符,長(zhǎng)度不超過(guò)128個(gè)字符。

    AppName

    播流所屬應(yīng)用名稱(chēng)。AppName必須與推流地址中的AppName名稱(chēng)一樣,水印模板才能生效。支持?jǐn)?shù)字、大小寫(xiě)字母、短劃線(xiàn)(-)、下劃線(xiàn)(_),長(zhǎng)度不超過(guò)256個(gè)字符。

    StreamName

    直播流名稱(chēng)。規(guī)則如下:

    • 直接寫(xiě)流名稱(chēng)則僅匹配該流名稱(chēng)。示例:liveStreamA

    • 可進(jìn)行模糊匹配。

      如果需要匹配全部直播流,僅輸入星號(hào)(*)即可。

      也可以進(jìn)行前匹配或后匹配。格式要求:匹配項(xiàng)需要用()符號(hào)包圍,多個(gè)匹配項(xiàng)用豎線(xiàn)|分隔;模糊匹配的星號(hào)(*)只能放在最前面或最后面。示例:(abc|123)*表示匹配所有前綴為abc或者123的流;*(t1|t2)表示匹配所有后綴為t1或t2的流。

    • 支持?jǐn)?shù)字、大小寫(xiě)字母、短劃線(xiàn)(-)、下劃線(xiàn)(_)、星號(hào)(*)、等號(hào)(=),長(zhǎng)度不超過(guò)256個(gè)字符。

    水印模板

    選擇已配置好的水印模板。若無(wú)模板,請(qǐng)先添加水印模板,具體操作請(qǐng)參見(jiàn)配置水印模板

  5. 單擊保存,完成水印規(guī)則的配置。

    說(shuō)明

    水印規(guī)則配置成功后,需要重新推流后,播流中才能帶水印。

API配置水印規(guī)則

        //需要<>內(nèi)容替換成實(shí)際使用的值
        DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
        IAcsClient client = new DefaultAcsClient(profile);
        AddLiveStreamWatermarkRuleRequest addLiveStreamWatermarkRuleRequest = new AddLiveStreamWatermarkRuleRequest();
        addLiveStreamWatermarkRuleRequest.setName("<WatermarkRuleName>");
        addLiveStreamWatermarkRuleRequest.setDomain("<DomainName>");
        addLiveStreamWatermarkRuleRequest.setApp("<AppName>");
        addLiveStreamWatermarkRuleRequest.setStream("<StreamName>");
        addLiveStreamWatermarkRuleRequest.setTemplateId("<TemplateId>");

        try {
            AddLiveStreamWatermarkRuleResponse addLiveStreamWatermarkRuleResponse = client.getAcsResponse(addLiveStreamWatermarkRuleRequest);
            System.out.println(new Gson().toJson(addLiveStreamWatermarkRuleResponse));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }
說(shuō)明
  • <AppName>不超過(guò)256字符,支持?jǐn)?shù)字、大小寫(xiě)字母、短劃線(xiàn)(-)、下劃線(xiàn)(_),暫不支持星號(hào)(*)。

  • 水印規(guī)則配置匹配時(shí)存在優(yōu)先級(jí),優(yōu)先匹配<StreamName>不為星號(hào)(*)的配置。

  • 更多參數(shù)說(shuō)明可參見(jiàn)AddLiveStreamWatermarkRule - 添加水印規(guī)則API。

功能使用

水印模板以及水印規(guī)則配置完成之后,推流播放即可使用直播水印功能,配置了水印功能的直播視頻樣例如下圖所示:

image

在該示例中,將文字制作成PNG格式圖片實(shí)現(xiàn)了水印功能。

水印透明度設(shè)置

設(shè)置水印透明度示例代碼:

//水印透明度,數(shù)值越小越透明。取值:0~255。默認(rèn)255
addLiveStreamWatermarkRequest.setTransparency(255);

比如現(xiàn)在將透明度設(shè)置為128,直播視頻樣例效果如下圖所示:

image

更新水印

更新水印模板示例代碼>>>

        //需要<>內(nèi)容替換成實(shí)際使用的值
        DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
        IAcsClient client = new DefaultAcsClient(profile);
        UpdateLiveStreamWatermarkRequest updateLiveStreamWatermarkRequest = new UpdateLiveStreamWatermarkRequest();
        updateLiveStreamWatermarkRequest.setTemplateId("<TemplateId>");
        updateLiveStreamWatermarkRequest.setName("<WatermarkName>");
        updateLiveStreamWatermarkRequest.setDescription("<Description>");
        updateLiveStreamWatermarkRequest.setRefWidth(<1920>);
        updateLiveStreamWatermarkRequest.setRefHeight(<1080>);
        updateLiveStreamWatermarkRequest.setOffsetCorner("<TopRight>");
        updateLiveStreamWatermarkRequest.setXOffset(<50.0>);
        updateLiveStreamWatermarkRequest.setYOffset(<100.0>);
        updateLiveStreamWatermarkRequest.setHeight(<200>);
        updateLiveStreamWatermarkRequest.setTransparency(<255>);
        updateLiveStreamWatermarkRequest.setPictureUrl("<PictureUrl>");
        //其他參數(shù)設(shè)置
        try {
            UpdateLiveStreamWatermarkResponse response = client.getAcsResponse(updateLiveStreamWatermarkRequest);
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

說(shuō)明

更新水印規(guī)則示例代碼>>>

        //需要<>內(nèi)容替換成實(shí)際使用的值
        DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
        IAcsClient client = new DefaultAcsClient(profile);
        UpdateLiveStreamWatermarkRuleRequest updateLiveStreamWatermarkRuleRequest = new UpdateLiveStreamWatermarkRuleRequest();
        updateLiveStreamWatermarkRuleRequest.setRuleId("<RuleId>");
        updateLiveStreamWatermarkRuleRequest.setTemplateId("<TemplateId>");
        try {
            UpdateLiveStreamWatermarkRuleResponse updateLiveStreamWatermarkRuleResponse = client.getAcsResponse(updateLiveStreamWatermarkRuleRequest);
            System.out.println(new Gson().toJson(updateLiveStreamWatermarkRuleResponse));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

說(shuō)明

更新水印模板或水印規(guī)則之后需要重新推流才能生效,但有時(shí)候您可能需要在直播過(guò)程中更新水印,此時(shí)可以通過(guò)動(dòng)態(tài)更新水印功能實(shí)現(xiàn)。

您可以調(diào)用DynamicUpdateWaterMarkStreamRule - 動(dòng)態(tài)更新水印API實(shí)現(xiàn)動(dòng)態(tài)調(diào)整水印功能。

動(dòng)態(tài)更新水印示例代碼>>>

      //需要<>內(nèi)容替換成實(shí)際使用的值
        DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
        IAcsClient client = new DefaultAcsClient(profile);
        DynamicUpdateWaterMarkStreamRuleRequest dynamicUpdateWaterMarkStreamRuleRequest = new DynamicUpdateWaterMarkStreamRuleRequest();
        dynamicUpdateWaterMarkStreamRuleRequest.setDomain("<DomainName>");
        dynamicUpdateWaterMarkStreamRuleRequest.setApp("<AppName>");
        dynamicUpdateWaterMarkStreamRuleRequest.setStream("<Stream>");
        dynamicUpdateWaterMarkStreamRuleRequest.setTemplateId("<TemplateId>");

        try {
            DynamicUpdateWaterMarkStreamRuleResponse dynamicUpdateWaterMarkStreamRuleResponse = client.getAcsResponse(dynamicUpdateWaterMarkStreamRuleRequest);
            System.out.println(new Gson().toJson(dynamicUpdateWaterMarkStreamRuleResponse));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

重要
  • <TemplateId>可以是新建的模板ID,也可以是原模板ID。調(diào)用此方法后,將按照模板最新的配置(包括圖片,透明度,位置等信息)更新水印。

  • 目前無(wú)法動(dòng)態(tài)更新StreamName配置為模糊匹配的水印規(guī)則

刪除水印模板

若是需要?jiǎng)h除水印模板,需要先刪除水印規(guī)則。

刪除水印規(guī)則示例代碼>>>

       //需要<>內(nèi)容替換成實(shí)際使用的值
        DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
        IAcsClient client = new DefaultAcsClient(profile);
        DeleteLiveStreamWatermarkRuleRequest deleteLiveStreamWatermarkRuleRequest = new DeleteLiveStreamWatermarkRuleRequest();
        deleteLiveStreamWatermarkRuleRequest.setDomain("<DomainName>");
        deleteLiveStreamWatermarkRuleRequest.setRuleId("<RuleId>");

        try {
            DeleteLiveStreamWatermarkRuleResponse deleteLiveStreamWatermarkRuleResponse = client.getAcsResponse(deleteLiveStreamWatermarkRuleRequest);
            System.out.println(new Gson().toJson(deleteLiveStreamWatermarkRuleResponse));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

說(shuō)明

水印規(guī)則支持通過(guò)AppName進(jìn)行刪除,相關(guān)說(shuō)明可參見(jiàn)DeleteLiveStreamWatermarkRule - 刪除水印規(guī)則

刪除水印模板示例代碼>>>

       //需要<>內(nèi)容替換成實(shí)際使用的值
        DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>");
        IAcsClient client = new DefaultAcsClient(profile);
        DeleteLiveStreamWatermarkRequest deleteLiveStreamWatermarkRequest = new DeleteLiveStreamWatermarkRequest();
        deleteLiveStreamWatermarkRequest.setTemplateId("<TemplateId>");

        try {
            DeleteLiveStreamWatermarkResponse deleteLiveStreamWatermarkResponse = client.getAcsResponse(deleteLiveStreamWatermarkRequest);
            System.out.println(new Gson().toJson(deleteLiveStreamWatermarkResponse));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

說(shuō)明

相關(guān)文檔

使用Java SDK,請(qǐng)參見(jiàn)Java SDK使用說(shuō)明