媒資管理
本篇文檔提供了Java SDK媒資管理模塊相關功能的API調用示例。主要包含搜索媒資信息、獲取視頻信息、修改視頻信息、刪除視頻、獲取源文件信息、獲取圖片信息、刪除圖片信息等。
接口調用說明
本文提供的接口調用示例均通過AccessKey初始化客戶端實例。
接口的參數(shù)解釋和返回字段的詳細說明請訪問阿里云OpenAPI門戶,在各接口右側的文檔頁簽查看。
本文僅提供部分復雜接口的代碼示例,其余接口的SDK代碼示例,可以通過阿里云OpenAPI門戶獲取。訪問阿里云OpenAPI門戶,在接口的左側參數(shù)配置頁簽,填寫需要的參數(shù)信息并發(fā)起調用后,在右側的SDK示例頁簽,選擇SDK版本,選擇目標語言,查看并下載示例代碼。
本文均以V1.0版本的SDK為例進行接口調用,如需獲取V2.0版本的SDK示例,請在通過阿里云OpenAPI門戶獲取SDK示例時,指定到對應的SDK版本。
初始化客戶端
使用前請先初始化客戶端,請參見初始化。
搜索媒資信息
調用SearchMedia接口,生成搜索媒資信息的SDK示例。
阿里云OpenAPI門戶地址:SearchMedia。
調用示例如下:
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.SearchMediaRequest;
import com.aliyuncs.vod.model.v20170321.SearchMediaResponse;
/**
*讀取AccessKey信息
*/
public static DefaultAcsClient initVodClient() throws ClientException {
String regionId = "cn-shanghai"; // 點播服務接入地域
// 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
// 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
// 本示例通過從環(huán)境變量中讀取AccessKey,來實現(xiàn)API訪問的身份驗證。運行代碼示例前,請配置環(huán)境變量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;
}
/**
* 搜索媒資信息
* @param client 發(fā)送請求客戶端
* @return SearchMediaResponse 搜索媒資信息響應數(shù)據(jù)
* @throws Exception
*/
public static SearchMediaResponse searchMedia(DefaultAcsClient client) throws Exception {
SearchMediaRequest request = new SearchMediaRequest();
request.setFields("Title,CoverURL,Status");
request.setMatch("Status in ('Normal','Checking') and CreationTime = ('2018-07-01T08:00:00Z','2018-08-01T08:00:00Z')");
request.setPageNo(1);
request.setPageSize(10);
request.setSearchType("video");
request.setSortBy("CreationTime:Desc");
return client.getAcsResponse(request);
}
// 請求示例
public static void main(String[] argv) {
DefaultAcsClient client = initVodClient();
SearchMediaResponse response = new SearchMediaResponse();
try {
response = searchMedia(client);
if (response.getMediaList() != null && response.getMediaList().size() > 0) {
System.out.print("Total = " + response.getTotal() + "\n");
System.out.print("ScrollToken = " + response.getScrollToken() + "\n");
for (SearchMediaResponse.Media media : response.getMediaList()) {
System.out.print("MediaId = " + media.getMediaId() + "\n");
System.out.print("MediaType = " + media.getMediaType() + "\n");
System.out.print("CreationTime = " + media.getCreationTime() + "\n");
System.out.print("Title = " + media.getVideo().getTitle() + "\n");
System.out.print("CoverURL = " + media.getVideo().getCoverURL() + "\n");
System.out.print("Status = " + media.getVideo().getStatus() + "\n");
}
}
} catch (Exception e) {
System.out.print("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.print("RequestId = " + response.getRequestId() + "\n");
}
獲取音視頻信息
調用GetVideoInfo接口,生成獲取單個音視頻的信息的SDK示例。
阿里云OpenAPI門戶地址:GetVideoInfo。
調用GetVideoInfos接口,生成批量獲取音視頻的信息的SDK示例。
阿里云OpenAPI門戶地址:GetVideoInfos。
修改單個音視頻信息
調用UpdateVideoInfo接口,生成修改單個音視頻信息的SDK示例。
阿里云OpenAPI門戶地址:UpdateVideoInfo。
批量修改音視頻信息
調用UpdateVideoInfos接口,生成批量修改音視頻信息的SDK示例。
阿里云OpenAPI門戶地址:UpdateVideoInfos。
調用示例如下:
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.UpdateVideoInfosRequest;
import com.aliyuncs.vod.model.v20170321.UpdateVideoInfosResponse;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
*讀取AccessKey信息
*/
public static DefaultAcsClient initVodClient() throws ClientException {
String regionId = "cn-shanghai"; // 點播服務接入地域
// 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
// 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
// 本示例通過從環(huán)境變量中讀取AccessKey,來實現(xiàn)API訪問的身份驗證。運行代碼示例前,請配置環(huán)境變量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;
}
/**
* 批量修改視頻信息
* @param client 發(fā)送請求客戶端
* @return UpdateVideoInfosResponse 批量修改視頻信息響應數(shù)據(jù)
* @throws Exception
*/
public static UpdateVideoInfosResponse updateVideoInfos(DefaultAcsClient client) throws Exception {
UpdateVideoInfosRequest request = new UpdateVideoInfosRequest();
JSONArray updateContentArray = new JSONArray();
JSONObject updateContent1 = new JSONObject();
updateContent1.put("VideoId", "VideoId1");
// updateContent1.put("Title", "new Title");
// updateContent1.put("Tags", "new Tag1,new Tag2");
updateContentArray.add((updateContent1));
JSONObject updateContent2 = new JSONObject();
updateContent2.put("VideoId", "VideoId2");
// updateContent2.put("Title", "new Title");
// updateContent2.put("Tags", "new Tag1,new Tag2");
updateContentArray.add((updateContent2));
request.setUpdateContent(updateContentArray.toJSONString());
return client.getAcsResponse(request);
}
// 請求示例
public static void main(String[] argv) {
DefaultAcsClient client = initVodClient();
UpdateVideoInfosResponse response = new UpdateVideoInfosResponse();
try {
response = updateVideoInfos(client);
if (response.getNonExistVideoIds() != null && response.getNonExistVideoIds().size() > 0) {
System.out.print("======nonexistent VideoIds : ======\n");
for (String videoId : response.getNonExistVideoIds()) {
System.out.print(videoId + "\n");
}
}
} catch (Exception e) {
System.out.print("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.print("RequestId = " + response.getRequestId() + "\n");
}
獲取源文件信息(含源片下載地址)
調用GetMezzanineInfo接口,生成獲取源文件信息的SDK示例。
阿里云OpenAPI門戶地址:GetMezzanineInfo。
獲取音視頻列表
調用GetVideoList接口,生成獲取音視頻列表的SDK示例。
阿里云OpenAPI門戶地址:GetVideoList。
刪除音視頻
調用DeleteVideo接口,生成刪除音視頻的SDK示例。
阿里云OpenAPI門戶地址:DeleteVideo。
刪除媒體流
調用DeleteStream接口,生成刪除媒體流的SDK示例。
阿里云OpenAPI門戶地址:DeleteStream。
批量刪除源文件
調用DeleteMezzanines接口,生成批量刪除源文件的SDK示例。
阿里云OpenAPI門戶地址:DeleteMezzanines。
批量更新圖片信息
調用UpdateImageInfos接口,生成批量更新圖片信息的SDK示例。
阿里云OpenAPI門戶地址:UpdateImageInfos。
調用示例如下:
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.UpdateImageInfosRequest;
import com.aliyuncs.vod.model.v20170321.UpdateImageInfosResponse;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
*讀取AccessKey信息
*/
public static DefaultAcsClient initVodClient() throws ClientException {
String regionId = "cn-shanghai"; // 點播服務接入地域
// 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
// 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
// 本示例通過從環(huán)境變量中讀取AccessKey,來實現(xiàn)API訪問的身份驗證。運行代碼示例前,請配置環(huán)境變量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;
}
/**
* 批量更新圖片信息函數(shù)
* @param client 發(fā)送請求客戶端
* @return UpdateImageInfosResponse 批量更新圖片信息響應數(shù)據(jù)
* @throws Exception
*/
public static UpdateImageInfosResponse updateImageInfos(DefaultAcsClient client) throws Exception{
UpdateImageInfosRequest request = new UpdateImageInfosRequest();
JSONArray updateContentArray = new JSONArray();
JSONObject updateContent1 = new JSONObject();
updateContent1.put("ImageId", "ImageId1");
// updateContent1.put("Title", "new Title");
// updateContent1.put("Tags", "new Tag1,new Tag2");
updateContentArray.add((updateContent1));
JSONObject updateContent2 = new JSONObject();
updateContent2.put("ImageId", "ImageId2");
// updateContent2.put("Title", "new Title");
// updateContent2.put("Tags", "new Tag1,new Tag2");
updateContentArray.add((updateContent2));
request.setUpdateContent(updateContentArray.toJSONString());
return client.getAcsResponse(request);
}
// 請求示例
public static void main(String[] argv) throws Exception {
DefaultAcsClient client = initVodClient();
UpdateImageInfosResponse response = new UpdateImageInfosResponse();
try {
response = updateImageInfos(client);
if (response.getNonExistImageIds() != null && response.getNonExistImageIds().size() > 0) {
System.out.print("======nonexistent ImageIds : ======\n");
for (String imageId : response.getNonExistImageIds()) {
System.out.print(imageId + "\n");
}
}
} catch (Exception e) {
System.out.print("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.print("RequestId = " + response.getRequestId() + "\n");
}
獲取圖片信息
調用GetImageInfo接口,生成獲取圖片信息的SDK示例。
阿里云OpenAPI門戶地址:GetImageInfo。
刪除圖片
調用DeleteImage接口,生成刪除圖片的SDK示例。
阿里云OpenAPI門戶地址:DeleteImage。
調用示例如下:
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.DeleteImageRequest;
import com.aliyuncs.vod.model.v20170321.DeleteImageResponse;
/**
*讀取AccessKey信息
*/
public static DefaultAcsClient initVodClient() throws ClientException {
String regionId = "cn-shanghai"; // 點播服務接入地域
// 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
// 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
// 本示例通過從環(huán)境變量中讀取AccessKey,來實現(xiàn)API訪問的身份驗證。運行代碼示例前,請配置環(huán)境變量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;
}
/**
* 刪除圖片函數(shù)
*
* @param client 發(fā)送請求客戶端
* @return DeleteImageResponse 刪除圖片響應數(shù)據(jù)
* @throws Exception
*/
public static DeleteImageResponse deleteImage(DefaultAcsClient client) throws Exception {
DeleteImageRequest request = new DeleteImageRequest();
//根據(jù)ImageURL刪除圖片文件
request.setDeleteImageType("ImageURL");
//ImageURL示例:http://example.aliyundoc.com/cover-****.jpg
String url = "<your image URL>";
String encodeUrl = URLEncoder.encode(url, "UTF-8");
request.setImageURLs(encodeUrl);
//根據(jù)ImageId刪除圖片文件
//request.setDeleteImageType("ImageId");
//request.setImageIds("ImageId1,ImageId2");
//根據(jù)VideoId刪除指定ImageType的圖片文件
//request.setDeleteImageType("VideoId");
//request.setVideoId("VideoId");
//request.setImageType("SpriteSnapshot");
return client.getAcsResponse(request);
}
// 請求示例
public static void main(String[] argv) throws ClientException {
DefaultAcsClient client = initVodClient();
DeleteImageResponse response = new DeleteImageResponse();
try {
response = deleteImage(client);
} catch (Exception e) {
System.out.print("ErrorMessage = " + e.getLocalizedMessage());
}
System.out.print("RequestId = " + response.getRequestId() + "\n");
}