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

媒體處理

媒體處理可以將一個音視頻文件轉換成另一個或多個音視頻文件,以適應不同網絡帶寬、終端設備和用戶的需求,包括音視頻轉碼、視頻截圖、視頻水印等多個功能。本文提供了Java SDK媒體處理相關的API調用示例,包含提交轉碼作業(包含HLS標準加密、普通轉碼、替換水印等場景)、提交截圖作業、查詢截圖數據、導播臺視頻預處理。

接口調用說明

  • 本文提供的接口調用示例均通過AccessKey初始化客戶端實例。

  • 接口的參數解釋和返回字段的詳細說明請訪問阿里云OpenAPI門戶,在各接口右側的文檔頁簽查看。

  • 本文僅提供部分復雜接口的代碼示例,其余接口的SDK代碼示例,可以通過阿里云OpenAPI門戶獲取。訪問阿里云OpenAPI門戶,在接口的左側參數配置頁簽,填寫需要的參數信息并發起調用后,在右側的SDK示例頁簽,選擇SDK版本,選擇目標語言,查看并下載示例代碼。

  • 本文均以V1.0版本的SDK為例進行接口調用,如需獲取V2.0版本的SDK示例,請在通過阿里云OpenAPI門戶獲取SDK示例時,指定到對應的SDK版本。image.png

初始化客戶端

使用前請先初始化客戶端,請參見初始化

提交轉碼作業

調用SubmitTranscodeJobs接口,完成提交轉碼作業功能。

說明

阿里云OpenAPI門戶地址:SubmitTranscodeJobs

調用示例如下:

import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.SubmitTranscodeJobsRequest;
import com.aliyuncs.vod.model.v20170321.SubmitTranscodeJobsResponse;
import com.aliyuncs.vod.model.v20170321.GenerateKMSDataKeyRequest;
import com.aliyuncs.vod.model.v20170321.GenerateKMSDataKeyResponse;

/** 
 * 讀取AccessKey信息
 */
public static DefaultAcsClient initVodClient() throws ClientException {
    // 點播服務接入地域
    String regionId = "cn-shanghai";  
    // 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
    // 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
    // 本示例通過從環境變量中讀取AccessKey,來實現API訪問的身份驗證。運行代碼示例前,請配置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    DefaultAcsClient client = new DefaultAcsClient(profile);
    return client;
    }

/**
 * 提交媒體處理作業
 */
public static SubmitTranscodeJobsResponse submitTranscodeJobs(DefaultAcsClient client) throws Exception {
    SubmitTranscodeJobsRequest request = new SubmitTranscodeJobsRequest();
    //需要轉碼的視頻ID
    request.setVideoId("34a6ca54f5c140eece85a289****");
    //轉碼模板ID
    request.setTemplateGroupId("e8aa925a9798c630d30cd****");
    //構建需要替換的水印參數(只有需要替換水印相關信息才需要構建)
    JSONObject overrideParams = buildOverrideParams();
    //覆蓋參數,暫只支持水印部分參數替換(只有需要替換水印相關信息才需要傳遞)
    request.setOverrideParams(overrideParams.toJSONString());
    //構建標準加密配置參數(只有標準加密才需要構建)
    JSONObject encryptConfig = buildEncryptConfig(client);
    //HLS標準加密配置(只有標準加密才需要傳遞)
    request.setEncryptConfig(encryptConfig.toJSONString());
    return client.getAcsResponse(request);
}


/**
 * 以下為調用示例
 */
public static void main(String[] args) throws ClientException {
    DefaultAcsClient client = initVodClient();
    SubmitTranscodeJobsResponse response = new SubmitTranscodeJobsResponse();
    try {
        response = submitTranscodeJobs(client);
        //任務ID
        System.out.println("JobId = " + response.getTranscodeJobs().get(0).getJobId());
    } catch (Exception e) {
        System.out.println("ErrorMessage = " + e.getLocalizedMessage());
    }
    System.out.println("RequestId = " + response.getRequestId());
}

/**
 * 構建HLS標準加密的配置信息
 * @return
 * @throws ClientException
 */
public static JSONObject buildEncryptConfig(DefaultAcsClient client) throws ClientException {
    //注意:Client為VOD的sdk client。可以通過 initVodClient 方法初始化
    GenerateKMSDataKeyResponse response = generateDataKey(client);
    JSONObject encryptConfig = new JSONObject();
    //解密接口地址,該參數需要將每次生成的密文密鑰與接口URL拼接生成,表示每個視頻的解密的密文密鑰都不一樣
    //至于Ciphertext這個解密接口參數的名稱,用戶可自行制定,這里只作為參考參數名稱
    encryptConfig.put("DecryptKeyUri", "http://example.aliyundoc.com/decrypt?" +
            "Ciphertext=" + response.getCiphertextBlob());
    //密鑰服務的類型,目前只支持KMS
    encryptConfig.put("KeyServiceType", "KMS");
    //密文密鑰
    encryptConfig.put("CipherText", response.getCiphertextBlob());
    return encryptConfig;
}

/**
 * 1、構建覆蓋參數,目前只支持圖片水印文件地址、文字水印的內容覆蓋。
 * 2、需要替換的水印信息,對應水印ID必須是關聯在指定的模板ID(即TranscodeTemplateId)中。
 * 3、不支持通過媒體處理接口去增加一個沒有關聯上的水印。
 * 注意:圖片水印的文件存儲源站需要和發起轉碼的視頻存儲源站一致。
 * @return
 */
public static JSONObject buildOverrideParams() {
    JSONObject overrideParams = new JSONObject();
    JSONArray watermarks = new JSONArray();
    //圖片水印文件地址替換
    JSONObject watermark1 = new JSONObject();
    //模板上面關聯需要替換的水印文件圖片水印ID
    watermark1.put("WatermarkId", "2ea587477c5a1bc8b57****");
    //需要替換成對應圖片水印文件的OSS地址,水印文件存儲源站需要和視頻存儲源站一致
    watermark1.put("FileUrl", "https:192.168.0.1/16");

    //文字水印內容替換
    JSONObject watermark2 = new JSONObject();
    //模板上面關聯需要替換內容的文字水印ID
    watermark2.put("WatermarkId", "d297ba31ac5242d207****");
    //需要替換成對應的內容
    watermark2.put("Content", "用戶ID:6****");
    watermarks.add(watermark2);
    overrideParams.put("Watermarks", watermarks);
    return overrideParams;
}

/**
 * 生成加密需要的密鑰,response中包含密文密鑰和明文密鑰,用戶只需要將密文密鑰傳遞給點播即可
 * @return
 * @throws ClientException
 */
public static GenerateKMSDataKeyResponse generateDataKey(DefaultAcsClient client) throws ClientException {
    GenerateKMSDataKeyRequest request = new GenerateKMSDataKeyRequest();
    return client.getAcsResponse(request);
}

提交截圖作業

調用SubmitSnapshotJob接口,完成提交截圖作業功能。

說明

創建截圖模板的詳細信息請參見截圖模板

阿里云OpenAPI門戶地址:SubmitSnapshotJob

調用示例如下:

import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.SubmitSnapshotJobRequest;
import com.aliyuncs.vod.model.v20170321.SubmitSnapshotJobResponse;

/** 
 * 讀取AccessKey信息
 */
public static DefaultAcsClient initVodClient() throws ClientException {
    // 點播服務接入地域
    String regionId = "cn-shanghai";  
    // 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
    // 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
    // 本示例通過從環境變量中讀取AccessKey,來實現API訪問的身份驗證。運行代碼示例前,請配置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    DefaultAcsClient client = new DefaultAcsClient(profile);
    return client;
    }

/**
 * 提交媒體截圖處理作業調用函數
 */
public static SubmitSnapshotJobResponse submitSnapshotJob(DefaultAcsClient client) throws Exception {
    SubmitSnapshotJobRequest request = new SubmitSnapshotJobRequest();
    //需要截圖的視頻ID(推薦傳遞截圖模板ID)
    request.setVideoId("4d237a8270084849bf4207876181****");
    //截圖模板ID
    request.setSnapshotTemplateId("5d745e6b8baadf589e0702426cfc6****");

    //如果設置了SnapshotTemplateId,會忽略下面參數
    request.setCount(50L);
    request.setSpecifiedOffsetTime(0L);
    request.setInterval(1L);
    request.setWidth("200");
    request.setHeight("200");
    JSONObject spriteSnapshotConfig = buildSnapshotTemplateConfig();
    request.setSpriteSnapshotConfig(spriteSnapshotConfig.toJSONString());
    return client.getAcsResponse(request);
}

/**
 * 構建雪碧圖截圖配置
 * @return
 */
public static JSONObject buildSnapshotTemplateConfig() {
    JSONObject spriteSnapshotConfig = new JSONObject();
    spriteSnapshotConfig.put("CellWidth", "120");
    spriteSnapshotConfig.put("CellHeight", "68");
    spriteSnapshotConfig.put("Columns", "3");
    spriteSnapshotConfig.put("Lines", "10");
    spriteSnapshotConfig.put("Padding", "20");
    spriteSnapshotConfig.put("Margin", "50");
    //保留雪碧圖原始圖
    spriteSnapshotConfig.put("KeepCellPic", "keep");
    spriteSnapshotConfig.put("Color", "tomato");
    return spriteSnapshotConfig;
}

/**
 * 以下為調用示例
 */
public static void main(String[] args) throws ClientException {
    DefaultAcsClient client = initVodClient();
    SubmitSnapshotJobResponse response = new SubmitSnapshotJobResponse();
    try {
        response = submitSnapshotJob(client);
        //任務ID
        System.out.println("JobId = " + response.getSnapshotJob().getJobId());
    } catch (Exception e) {
        System.out.println("ErrorMessage = " + e.getLocalizedMessage());
    }
    System.out.println("RequestId = " + response.getRequestId());
}

查詢截圖數據

調用ListSnapshots接口,完成查詢截圖數據的功能。

阿里云OpenAPI門戶地址:ListSnapshots

導播臺視頻預處理

調用SubmitPreprocessJobs接口,完成導播臺視頻預處理功能。

阿里云OpenAPI門戶地址:SubmitPreprocessJobs

相關文檔

  • 媒體處理概述:介紹視頻點播提供的媒體處理能力,包括能力類型、使用場景及各媒體處理能力的詳細信息。

  • 轉碼常見問題:介紹使用視頻點播轉碼過程中的常見問題及處理建議。