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

設(shè)置視頻封面

視頻上傳到視頻點(diǎn)播中時(shí),若指定了視頻封面則會(huì)使用指定的圖片作為視頻封面,如果不指定,則會(huì)自動(dòng)截取并選擇一張視頻截圖作為視頻封面,上傳完成后也可以對視頻封面進(jìn)行更新。

概述

上傳到視頻點(diǎn)播中的每一個(gè)視頻都存在視頻封面。

上傳視頻時(shí),如果指定了視頻封面,則視頻上傳完成后,會(huì)使用您指定的圖片作為視頻封面;若上傳時(shí)未指定視頻封面,則點(diǎn)播會(huì)默認(rèn)對上傳的視頻進(jìn)行視頻截圖,截取1~8張圖,并選取中間的一張截圖作為視頻封面,更多信息,請參見視頻截圖。視頻上傳完成之后,也可以對視頻封面進(jìn)行更新。

視頻點(diǎn)播支持設(shè)置普通封面和智能封面。其中,智能封面需要單獨(dú)申請開通,更多信息,請參見智能封面產(chǎn)品頁

  • 普通封面:人為的自定義指定視頻封面。封面圖來源于本地圖片或視頻截圖或任意可訪問的鏈接地址(支持靜態(tài)圖片封面、動(dòng)圖封面、視頻封面等形式)。

  • 智能封面:系統(tǒng)通過對視頻內(nèi)容的理解,結(jié)合畫面美學(xué)分析,選出最優(yōu)的關(guān)鍵幀或關(guān)鍵片段作為視頻封面。封面圖來源于視頻本身,支持提取靜態(tài)圖片封面、動(dòng)圖封面兩種形式。

使用場景

支持設(shè)置的封面類型

支持的設(shè)置方式

相關(guān)文檔

上傳視頻時(shí)設(shè)置封面

普通封面

OpenAPI

上傳視頻時(shí)設(shè)置封面

視頻上傳后更新封面

普通封面

  • 控制臺

  • OpenAPI

視頻上傳后更新封面

智能封面

OpenAPI

前提條件

  • 已經(jīng)開通了視頻點(diǎn)播服務(wù)。開通步驟請參見開通視頻點(diǎn)播

  • 為了您的賬號和資源的安全,建議您使用RAM用戶或RAM角色進(jìn)行操作,并請確保RAM用戶或RAM角色已授予視頻點(diǎn)播的相關(guān)權(quán)限。具體操作,請參見創(chuàng)建RAM用戶并授權(quán)

  • 如果您已經(jīng)配置了視頻點(diǎn)播的加速域名,則該域名需要配置證書后,才能設(shè)置封面。具體操作,請參見HTTPS安全加速設(shè)置

上傳視頻時(shí)設(shè)置封面

視頻點(diǎn)播提供了多種上傳視頻的方式,詳細(xì)信息,請參見上傳方式。其中,僅開發(fā)上傳方式即通過API/SDK方式上傳視頻時(shí),支持指定視頻封面上傳。具體設(shè)置如下:

重要

CoverURL支持設(shè)置任意地址,視頻點(diǎn)播不對該地址作處理,僅保存該地址,在用戶請求時(shí)返回,您需要自行保證該CoverURL是否可以訪問。

視頻上傳后更新封面

當(dāng)視頻上傳到視頻點(diǎn)播之后,可以通過下述方式更新視頻封面。

設(shè)置普通封面

控制臺方式

當(dāng)視頻上傳到視頻點(diǎn)播之后,可以直接在視頻點(diǎn)播控制臺更新視頻封面。支持設(shè)置本地圖片和視頻截圖為視頻封面。

  1. 登錄視頻點(diǎn)播控制臺

  2. 在左側(cè)導(dǎo)航欄選擇媒資庫 > 音/視頻,進(jìn)入到音視頻列表頁面。

  3. 選擇需要更新封面的視頻,單擊管理

  4. 基礎(chǔ)信息頁簽,單擊編輯視頻信息

    • 可以從自動(dòng)截取的多張視頻截圖里選一張作為視頻封面。

    • 也可以單擊上傳封面,選擇一張本地圖片作為視頻封面。

      說明

      上傳封面的圖片僅支持JPG、PNG格式,最大1 MB,像素不超過1920Px × 1080Px。

      設(shè)置智能封面2
  5. 單擊保存,完成配置。

    完成配置后,可以返回音視頻列表頁面查看視頻封面是否已經(jīng)更新成功。

OpenAPI方式

當(dāng)視頻上傳到視頻點(diǎn)播之后,可以調(diào)用下述接口更新視頻封面。支持設(shè)置任意可訪問的地址為視頻封面。

重要

CoverURL支持設(shè)置任意地址,視頻點(diǎn)播不對該地址作處理,僅保存該地址,在用戶請求時(shí)返回,您需要自行保證該CoverURL是否可以訪問。

  • 調(diào)用UpdateVideoInfo - 修改單個(gè)音視頻信息接口,傳入CoverURL(自定義視頻封面URL地址)參數(shù)指定視頻封面。

  • 調(diào)用UpdateVideoInfos - 批量修改音視頻信息接口,在UpdateContent中傳入CoverURL參數(shù)(自定義視頻封面URL地址)指定視頻封面。

  • 如果視頻已存儲到OSS自有Bucket中,當(dāng)將OSS自有Bucket接入到視頻點(diǎn)播中,調(diào)用RegisterMedia - 注冊媒資信息接口注冊媒資信息時(shí),在RegisterMetadata里面?zhèn)魅?code data-tag="code" class="code">CoverURL(自定義視頻封面URL地址)參數(shù)指定視頻封面。

設(shè)置智能封面

視頻智能封面,是通過對視頻內(nèi)容的理解,結(jié)合畫面美學(xué)和海量生產(chǎn)數(shù)據(jù),選出最優(yōu)的關(guān)鍵幀或關(guān)鍵片段作為視頻封面,提升視頻點(diǎn)擊轉(zhuǎn)化及用戶體驗(yàn)。

說明

視頻點(diǎn)播現(xiàn)僅支持封面圖片和封面動(dòng)圖,暫不支持封面視頻。

案例演示-設(shè)置視頻首幀截圖為視頻封面

配置流程

  1. 創(chuàng)建截取視頻首幀的截圖模板。

  2. 發(fā)起截取視頻首幀的截圖任務(wù)。

  3. 修改視頻封面為視頻首幀截圖。

配置方法

控制臺方式配置

  1. 創(chuàng)建截取視頻首幀的截圖模板。

    1. 登錄視頻點(diǎn)播控制臺

    2. 在左側(cè)導(dǎo)航欄選擇配置管理 > 媒體處理配置 > 截圖模板,進(jìn)入到截圖模板頁面。

    3. 單擊添加截圖模板,配置截取視頻首幀截圖的模板參數(shù)。

      模板名稱請自定義設(shè)置,截圖方式選擇普通截圖起始時(shí)間點(diǎn)設(shè)置為00:00:00,截圖數(shù)量設(shè)置為1,其余參數(shù)請按需配置,有關(guān)截圖模板的參數(shù)解釋,詳情請參見截圖模板首幀截圖1.png

    4. 單擊保存,完成截圖模板的創(chuàng)建。

  2. 發(fā)起截取視頻首幀的截圖任務(wù)。

    說明
    • 通過控制臺方式發(fā)起截圖任務(wù)時(shí),只能通過工作流的方式發(fā)起,因此,您需要先創(chuàng)建一個(gè)包含視頻首幀截圖任務(wù)的工作流(即在工作流中添加視頻截圖節(jié)點(diǎn),并設(shè)置截圖模板為上一步創(chuàng)建的首幀截圖模板)。工作流的創(chuàng)建方法,請參見工作流管理

    • 建議您發(fā)起截圖任務(wù)之前,配置視頻點(diǎn)播的事件通知,通過設(shè)置視頻截圖完成的事件通知,以便在截圖任務(wù)完成后,能獲取到截圖任務(wù)的狀態(tài)及截取的圖片地址等信息。事件通知的配置方法,請參見回調(diào)設(shè)置

    • 場景一:上傳視頻時(shí)截圖

      1. 在視頻點(diǎn)播控制臺,從左側(cè)導(dǎo)航欄選擇媒資庫 > 音/視頻

      2. 單擊上傳音/視頻,單擊添加音/視頻

      3. 按需設(shè)置上傳方式、存儲地址并添加上傳的視頻后,選擇用工作流處理,并選擇預(yù)先創(chuàng)建的包含首幀截圖任務(wù)的工作流。

      4. 單擊開始上傳

    • 場景二:上傳視頻后截圖

      1. 在視頻點(diǎn)播控制臺,從左側(cè)導(dǎo)航欄選擇媒資庫 > 音/視頻

      2. 在音/視頻列表頁面,單擊目標(biāo)視頻所在行的媒體處理

      3. 處理類型選擇用工作流處理工作流選擇預(yù)先創(chuàng)建的包含首幀截圖任務(wù)的工作流。

      4. 單擊確定

    • 獲取截圖結(jié)果

      • 如果您已經(jīng)配置了視頻點(diǎn)播的視頻截圖完成的事件通知,您可以從回調(diào)事件中獲取到截圖任務(wù)的狀態(tài)及截取的圖片地址等信息。

      • 如果您未配置事件通知,您可以使用輪詢的方式調(diào)用ListSnapshots - 查詢截圖數(shù)據(jù)接口來查詢截圖任務(wù)的狀態(tài)及截取的圖片地址等信息。

  3. 修改視頻封面為視頻首幀截圖。

    說明

    通過控制臺方式修改視頻封面,只支持在視頻上傳完成后對視頻封面進(jìn)行更新。您需要先將步驟2中截圖任務(wù)截取到的視頻首幀截圖保存到本地以便修改封面時(shí)上傳。

    1. 在視頻點(diǎn)播控制臺,從左側(cè)導(dǎo)航欄選擇媒資庫 > 音/視頻

    2. 在音/視頻列表頁面,單擊目標(biāo)視頻所在行的管理

    3. 基礎(chǔ)信息頁簽,單擊編輯視頻信息

    4. 單擊上傳封面,選擇預(yù)先保存到本地的視頻首幀截圖,單擊打開

    5. 單擊保存,完成視頻封面設(shè)置。

      設(shè)置完成后,您可以在音/視頻列表頁面查看視頻封面是否更新成功。

OpenAPI方式配置

說明

本文以使用Java語言的阿里云 SDK方式調(diào)用視頻點(diǎn)播的OpenAPI為例進(jìn)行舉例說明。

操作步驟

  1. 創(chuàng)建截取視頻首幀的截圖模板。

    調(diào)用AddVodTemplate - 添加截圖模板接口,創(chuàng)建截取視頻首幀的截圖模板。調(diào)用示例如下:

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.vod.model.v20170321.AddVodTemplateRequest;
    import com.aliyuncs.vod.model.v20170321.AddVodTemplateResponse;
    
    
    /**
     * 說明:
     * 1. 本Demo為創(chuàng)建首幀截圖模板示例,截圖輸出為 1 張圖片。
     * 2. 推薦使用視頻點(diǎn)播控制臺創(chuàng)建截圖模板,更加方便快捷。
     */
    public class AddSnapshotTemplate {
    
        // 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
        // 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
        // 本示例通過從環(huán)境變量中讀取AccessKey,來實(shí)現(xiàn)API訪問的身份驗(yàn)證。運(yùn)行代碼示例前,請配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        public static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        public static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
        public static void main(String[] args) {
    
            try{
                DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
                AddVodTemplateResponse response = addSnapshotTemplate(vodClient);
                System.out.println("RequestId is:" + response.getRequestId());
                System.out.println("TemplateId is:" + response.getVodTemplateId());
            }catch (Exception e){
    
            }
        }
    
        public static AddVodTemplateResponse addSnapshotTemplate(DefaultAcsClient vodClient) throws ClientException {
            AddVodTemplateRequest request = new AddVodTemplateRequest();
            request.setName("首幀截圖模板");
            request.setTemplateType("Snapshot");
            request.setTemplateConfig("{\"SnapshotType\":\"NormalSnapshot\",\"SnapshotConfig\":{\"FrameType\":\"normal\",\"Count\":1,\"Interval\":1,\"SpecifiedOffsetTime\":0}}");
    
            return vodClient.getAcsResponse(request);
        }
    
        public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
            // 點(diǎn)播服務(wù)接入?yún)^(qū)域
            String regionId = "cn-shanghai";  
            DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
    
            return client;
        }
    }
    
  2. 發(fā)起截取視頻首幀的截圖任務(wù)。

    調(diào)用SubmitSnapshotJob - 提交媒體截圖作業(yè)接口,發(fā)起截圖任務(wù)。調(diào)用示例如下:

    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.vod.model.v20170321.*;
    
    /**
     * 說明:
     * 1. 本Demo為創(chuàng)建首幀截圖模板后,提交首幀截圖任務(wù)。
     * 2. 對于新上傳的視頻,建議該步驟放在【音視頻分析完成】事件成功之后,對于存量且狀態(tài)正常的視頻,可自行設(shè)計(jì)。
     * 3. 截圖為異步任務(wù),需要等到【視頻截圖完成】事件成功之后(推薦),可獲取截圖地址。
     * 4. 根據(jù)回調(diào)事件中的SnapshotRegular,可推測出截圖輸出地址。詳情請參見【視頻截圖完成】文檔中的截圖地址生成規(guī)則說明。
     * 5. 若您暫無回調(diào)服務(wù),也可以通過ListSnapshots接口主動(dòng)查詢,該接口默認(rèn)只返回最新一次的截圖結(jié)果。詳情請參見ListSnapshots接口文檔。
     */
    public class SubmitSnapshotJob {
    
        // 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
        // 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
        // 本示例通過從環(huán)境變量中讀取AccessKey,來實(shí)現(xiàn)API訪問的身份驗(yàn)證。運(yùn)行代碼示例前,請配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        public static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        public static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
        public static void main(String[] args) {
    
            try{
                DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
                SubmitSnapshotJobResponse response = submitSnapshotJob(vodClient);
                System.out.println("RequestId is:" + response.getRequestId());
                System.out.println("JobId is:" + response.getSnapshotJob().getJobId());
            }catch (Exception e){
    
            }
        }
    
        public static SubmitSnapshotJobResponse submitSnapshotJob(DefaultAcsClient vodClient) throws ClientException {
            SubmitSnapshotJobRequest request = new SubmitSnapshotJobRequest();
            request.setVideoId("a42b**********633b79f0102");
            request.setSnapshotTemplateId("1f27a7**********eba2756");
            //自定義透傳參數(shù),回調(diào)時(shí)可用,非必須,用于區(qū)分封面首幀截圖
            request.setUserData("{\"Extend\":{\"SnapshotType\":\"FirstFrame\",\"VideoId\":\"a42bf540********33b79f0102\"}}");
            return vodClient.getAcsResponse(request);
        }
    
        public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
            // 點(diǎn)播服務(wù)接入?yún)^(qū)域
            String regionId = "cn-shanghai";  
            DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
    
            return client;
        }
    
        //ListSnapshots 查詢截圖
        public static ListSnapshotsResponse listSnapshots(DefaultAcsClient vodClient) throws ClientException {
            ListSnapshotsRequest request = new ListSnapshotsRequest();
            request.setVideoId("a42bf540b1b371ed804a6633b79****");
            request.setSnapshotType("NormalSnapshot");
    
            ListSnapshotsResponse response = vodClient.getAcsResponse(request);
            System.out.println("RequestId is:" + response.getRequestId());
            System.out.println("SnapshotUrl is:" + response.getMediaSnapshot().getSnapshots().get(0).getUrl());
            return vodClient.getAcsResponse(request);
        }
    
    }
    
  3. 修改視頻封面為視頻首幀截圖。

    此處以視頻上傳完成后,修改單個(gè)視頻封面的場景為例進(jìn)行說明,其他場景的實(shí)現(xiàn),請參見上傳視頻時(shí)設(shè)置封面視頻上傳后更新封面

    通過調(diào)用UpdateVideoInfo - 修改單個(gè)音視頻信息接口,傳入CoverURL參數(shù)指定視頻封面。調(diào)用示例如下:

    package com.alibaba.bltest.transcode;
    
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.vod.model.v20170321.UpdateVideoInfoRequest;
    import com.aliyuncs.vod.model.v20170321.UpdateVideoInfoResponse;
    
    /**
     * 說明:
     * 1. 本Demo為修改單個(gè)視頻封面,如需修改其他視頻參數(shù),請參見UpdateVideoInfo的接口文檔。
     * 2. 對于修改封面的場景,請確保您使用的圖片地址是有效的。
     */
    public class UpdateVideoInfo {
    
        // 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
        // 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
        // 本示例通過從環(huán)境變量中讀取AccessKey,來實(shí)現(xiàn)API訪問的身份驗(yàn)證。運(yùn)行代碼示例前,請配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        public static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        public static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    
        public static void main(String[] args) {
    
            try{
                DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
                UpdateVideoInfoResponse response = updateVideoInfo(vodClient);
                System.out.println("RequestId is:" + response.getRequestId());
            }catch (Exception e){
    
            }
        }
    
        public static UpdateVideoInfoResponse updateVideoInfo(DefaultAcsClient vodClient) throws ClientException {
            UpdateVideoInfoRequest request = new UpdateVideoInfoRequest();
            request.setVideoId("a42b***********33b79f0102");
            //設(shè)置首幀封面時(shí),CoverURL為首幀截圖任務(wù)成功后輸出的圖片地址
            request.setCoverURL("http://demo.aliyuncdn.com/a42bf5******40b1b37/snapshots/normal/41B7AF54-18672BB301D-1748-0984-309-112420****.jpg");
    
            return vodClient.getAcsResponse(request);
        }
    
        public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
            // 點(diǎn)播服務(wù)接入?yún)^(qū)域
            String regionId = "cn-shanghai";  
            DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            return client;
        }
    }
    

完整實(shí)例

package com.alibaba.bltest.transcode;


import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.*;
import org.apache.commons.lang3.StringUtils;

/**
 * 說明:
 * 1. 本Demo為完整截圖+修改封面邏輯設(shè)計(jì),部分代碼需要根據(jù)自己業(yè)務(wù)邏輯自行修改。
 * 2. 本Demo非直接可用,部分邏輯需要自行補(bǔ)充。
 * 3. 本Demo僅供實(shí)現(xiàn)參考,不代表唯一實(shí)現(xiàn)方式。
 */
public class SnapshotAndUpdateCover {

    // 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。
    // 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。
    // 本示例通過從環(huán)境變量中讀取AccessKey,來實(shí)現(xiàn)API訪問的身份驗(yàn)證。運(yùn)行代碼示例前,請配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    public static String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    public static String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");

    public static void main(String[] args) {


        try{
            DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
            //視頻ID
            String videoId = "a42bf540b1b37*******b79f0102";

            //場景一:有回調(diào)服務(wù) 或 MNS
            //若是為新上傳的視頻設(shè)置封面,則需要先獲取到音視頻分析成功事件
            //若是為存量視頻設(shè)置封面,則可以直接從此步驟開始提交截圖任務(wù)
            submitSnapshotJob(vodClient,videoId);

            //獲取到視頻截圖成功事件,判斷截圖類型,取得需要的圖片URL
            JSONObject callBackMessage = new JSONObject();  //此處替換為回調(diào)服務(wù)收到的message
            String snapshotType = callBackMessage.getJSONObject("UserData").getJSONObject("Extend").getString("SnapshotType");
            if("FirstFrame".equals(snapshotType)){

                //這里的截圖路徑邏輯需要根據(jù)您自行定義的截圖路徑邏輯來替換
                String coverUrl = callBackMessage.getJSONArray("SnapshotInfos").getJSONObject(0).getString("SnapshotRegular").replace("{SnapshotCount}","00001");
                //修改視頻封面
                updateVideoInfo(vodClient,videoId,coverUrl);
            }

            //場景二:無回調(diào)服務(wù) 或 MNS
            //若是為新上傳的視頻設(shè)置封面,則視頻上傳后,輪詢視頻狀態(tài)
            String videoStatus = "";
            while(!"Normal".equals(videoStatus)){
                videoStatus = getVideoInfo(vodClient,videoId);
                Thread.sleep(1000);
            }

            //若是為存量視頻設(shè)置封面,則可以直接從此步驟開始提交截圖任務(wù)
            submitSnapshotJob(vodClient,videoId);

            //輪詢截圖結(jié)果
            String coverUrl = "";
            while(StringUtils.isBlank(coverUrl)){
                coverUrl = listSnapshots(vodClient,videoId);
                Thread.sleep(1000);
            }

            //修改視頻封面
            updateVideoInfo(vodClient,videoId,coverUrl);
        }catch (Exception e){

        }
    }

    /**
     * 提交截圖任務(wù)
     */
    public static SubmitSnapshotJobResponse submitSnapshotJob(DefaultAcsClient vodClient, String vid) throws ClientException {
        SubmitSnapshotJobRequest request = new SubmitSnapshotJobRequest();
        request.setVideoId(vid);
        request.setSnapshotTemplateId("1f27a7f*********70eba2756");
        //自定義透傳參數(shù),回調(diào)時(shí)可用,非必須,用于區(qū)分封面首幀截圖
        request.setUserData("{\"Extend\":{\"SnapshotType\":\"FirstFrame\",\"VideoId\":\"a42bf540********33b79f0102\"}}");

        return vodClient.getAcsResponse(request);
    }

    /**
     * 修改視頻封面
     */
    public static UpdateVideoInfoResponse updateVideoInfo(DefaultAcsClient vodClient, String vid, String coverUrl) throws ClientException {
        UpdateVideoInfoRequest request = new UpdateVideoInfoRequest();
        request.setVideoId(vid);
        //設(shè)置首幀封面時(shí),CoverURL為首幀截圖任務(wù)成功后輸出的圖片地址
        request.setCoverURL(coverUrl);

        return vodClient.getAcsResponse(request);
    }

    /**
     * 初始化sdk實(shí)例
     */
    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
        // 點(diǎn)播服務(wù)接入?yún)^(qū)域
        String regionId = "cn-shanghai";  
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);

        return client;
    }

    /**
     * 查詢截圖
     */
    public static String listSnapshots(DefaultAcsClient vodClient, String vid) throws ClientException {
        ListSnapshotsRequest request = new ListSnapshotsRequest();
        request.setVideoId(vid);
        request.setSnapshotType("NormalSnapshot");

        ListSnapshotsResponse response = vodClient.getAcsResponse(request);
        String coverUrl = "";
        System.out.println("RequestId is:" + response.getRequestId());
        try{
            coverUrl = response.getMediaSnapshot().getSnapshots().get(0).getUrl();
            System.out.println("SnapshotUrl is:" + response.getMediaSnapshot().getSnapshots().get(0).getUrl());
        }catch (NullPointerException e){

        }
        return coverUrl;
    }

    /**
     * 查詢單個(gè)視頻
     */
    public static String getVideoInfo(DefaultAcsClient vodClient, String vid) throws ClientException {
        GetVideoInfoRequest request = new GetVideoInfoRequest();
        request.setVideoId(vid);

        GetVideoInfoResponse response = vodClient.getAcsResponse(request);
        System.out.println("RequestId is:" + response.getRequestId());
        String videoStatus = "";
        try{
            videoStatus = response.getVideo().getStatus();
            System.out.println("Video Status is:" + response.getVideo().getStatus());
        }catch (NullPointerException e){

        }

        return videoStatus;
    }
}