專案引入阿里云視頻點播PHP-SDK
背景:2021年樂視云的點播將停止提供服務,專案決定選擇選用阿里云的視頻的點播,在上線前,需要將之前的視頻提前匯入資源庫,URLS方式拉取是比較方便的,對編輯同事來說操作簡單,而且樂視云提供視頻下載url,下面是對案例進行的調整
URL批量拉取上傳(調整為多個視頻上傳)
阿里云PHP-SDK檔案示例內容如下:點擊地址進入
呼叫UploadMediaByURL介面,完成URL批量拉取上傳功能,
介面引數和回傳欄位請參見UploadMediaByURL,呼叫示例如下:
/**
* URL批量拉取上傳
* @param client 發送請求客戶端
* @return UploadMediaByURLResponse URL批量拉取上傳回應資料
*/
function uploadMediaByURL($client) {
$request = new vod\UploadMediaByURLRequest();
$url = "http://192.168.0.0/16/***.mp4";
$request->setUploadURLs($url);
$uploadMetadataList = array();
$uploadMetadata = https://www.cnblogs.com/x-go/archive/2020/12/18/array();
$uploadMetadata["SourceUrl"] = $url;
$uploadMetadata["Title"] = "upload by url sample";
$uploadMetadataList[] = $uploadMetadata;
$request->setUploadMetadatas(json_encode($uploadMetadataList));
return $client->getAcsResponse($request);
}
try {
$client = initVodClient('<AccessKeyId>', '<AccessKeySecret>');
$result = uploadMediaByURL($client);
var_dump($result);
} catch (Exception $e) {
print $e->getMessage()."\n";
}
根據阿里云VOD的api檔案,點擊地址進入,
對于UploadURLs這個引數的描述是:
URL中需要包括擴展名, 比如https://****.mp4中mp4為擴展名,
如果URL中不包含擴展名,可以在UploadMetadatas中傳入FileExtension來指定,
如果URL中有擴展名且同時傳入FileExtension,以傳入的FileExtension為準,
指定支持的擴展名,請參見上傳概述,
URL編碼,多個地址以英文逗號(,)分隔,最多支持20個,
避免存在特殊字符導致無法上傳視頻,需要URL編碼后再做逗號拼接,
所以我們將示例代碼進行下面的調整:
/**
* URL批量拉取上傳
* @param client 發送請求客戶端
* @return UploadMediaByURLResponse URL批量拉取上傳回應資料
*/
function uploadMediaByURL($client) {
$request = new vod\UploadMediaByURLRequest();
$urlDates = [];
$uploadMetadataList = array();
$uploadUrls = '';
foreach ($urlDates as $urlDate){
$url = urlencode($urlDate['url']);
$uploadMetadata = https://www.cnblogs.com/x-go/archive/2020/12/18/array();
$uploadMetadata["SourceUrl"] = $url;
$uploadMetadata["Title"] = $urlDate['video_name'];
$uploadMetadata["CateId"] = 123;
$uploadMetadata["FileExtension"] = pathinfo($url, PATHINFO_EXTENSION);
$uploadUrls .= $url.',';
$uploadMetadataList[] = $uploadMetadata;
}
$uploadUrls = rtrim($uploadUrls, ",");
$request->setUploadURLs($uploadUrls);
$request->setUploadMetadatas(json_encode($uploadMetadataList));
return $client->getAcsResponse($request);
}
try {
$client = initVodClient('<AccessKeyId>', '<AccessKeySecret>');
$result = uploadMediaByURL($client,);
var_dump($result);
} catch (Exception $e) {
print $e->getMessage()."\n";
}
相信這時候你已經明白了,我自己集成的類里的方法如下,供大家再參考下:
/**
* URL批量拉取上傳
* @param client 發送請求客戶端
* @return UploadMediaByURLResponse URL批量拉取上傳回應資料
*/
private function uploadMediaByURL($client,$urlDates) {
$request = new vod\UploadMediaByURLRequest();
$uploadMetadataList = array();
$uploadUrls = '';
foreach ($urlDates as $urlDate){
$url = urlencode($urlDate['url']);
$uploadMetadata = https://www.cnblogs.com/x-go/archive/2020/12/18/array();
$uploadMetadata["SourceUrl"] = $url;
$uploadMetadata["Title"] = $urlDate['video_name'];
$uploadMetadata["CateId"] = *****;
$uploadMetadata["FileExtension"] = pathinfo($url, PATHINFO_EXTENSION);
$uploadUrls .= $url.',';
$uploadMetadataList[] = $uploadMetadata;
}
$uploadUrls = rtrim($uploadUrls, ",");
$request->setUploadURLs($uploadUrls);
$request->setUploadMetadatas(json_encode($uploadMetadataList));
return $client->getAcsResponse($request);
}
public function uploadMediaByURLResult($urlDates)
{
try {
$client = $this->initVodClient();
$result = $this->uploadMediaByURL($client,$urlDates);
return $result;
} catch (Exception $e) {
print $e->getMessage()."\n";
}
}
歡迎大家討論,有好的優化大家可以在評論區提出來,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237009.html
標籤:其他
