不同設備(例如智能手機、平板電腦、智能電視等)和播放器支持的視頻格式存在差異。如果您希望將源視頻文件轉換為能夠在目標設備或應用中正常播放的格式,確保視頻內容可以在多平臺上進行傳播和分享,您可以使用視頻轉碼功能。轉碼過程中可以調整視頻的分辨率、幀率等參數,從而縮小視頻文件體積,便于視頻快速傳輸,同時節省存儲空間。
前提條件
已綁定IMM。具體步驟,請參見綁定IMM。
注意事項
使用視頻轉碼之前,確保您已了解該功能。詳情請參見視頻轉碼。
僅PHP SDK 2.7.0及以上版本支持視頻轉碼。
本文以華東1(杭州)外網Endpoint為例。如果您希望通過與OSS同地域的其他阿里云產品訪問OSS,請使用內網Endpoint。關于OSS支持的Region與Endpoint的對應關系,請參見OSS訪問域名、數據中心、開放端口。
本文以從環境變量讀取訪問憑證為例。如何配置訪問憑證,請參見配置訪問憑證。
本文以OSS域名新建OSSClient為例。如果您希望通過自定義域名、STS等方式新建OSSClient,請參見初始化。
要執行視頻轉碼任務,您必須擁有OSS以及IMM相關權限。更多信息,請參見權限說明。
示例代碼
以下代碼用于使用異步方式進行視頻轉碼。
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;
try {
// 從環境變量中獲取訪問憑證,并保存在provider中。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
$provider = new EnvironmentVariableCredentialsProvider();
// 填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 指定Bucket名稱。
$bucket = "examplebucket";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"bucket" => $bucket
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// 指定原視頻文件名稱。
$source_object = 'src.mp4';
// 指定處理后的視頻文件名稱。
$target_object = 'dest.avi';
// 對原視頻文件進行視頻轉碼。轉碼輸出媒體文件容器為avi,視頻流格式為H.265,分辨率為1920x1080,幀率為30 fps,視頻碼率為2 Mbps;音頻編碼格式為aac,音頻碼率為100 Kbps,并禁用字幕流。
$process = 'video/convert,f_avi,vcodec_h265,s_1920x1080,vb_2000000,fps_30,acodec_aac,ab_100000,sn_1' .
'|sys/saveas' .
',o_' . base64url_encode($target_object) .
',b_' . base64url_encode($bucket);
$result = $ossClient->asyncProcessObject($bucket, $source_object, $process);
var_dump($result);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
function base64url_encode($data)
{
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
文檔內容是否對您有幫助?