本文为您提供了服务端 PHP SDK 的媒资上传模块的接口调用示例。
视频点播目前支持以下两个版本的获取上传地址和凭证和确认上传接口:
接口请求参数和返回参数详见 OpenAPI:获取上传地址和凭证及确认上传。
注意
版本号为 2022-01-01 时,上传文件必须携带文件后缀。例如,如需上传 MP4 文件,携带 .mp4
或 .MP4
。
<?php require('../../vendor/autoload.php'); use Volc\Service\Vod\Models\Request\VodUploadMediaRequest; use Volc\Service\Vod\Models\Response\VodCommitUploadInfoResponse; use Volc\Service\Vod\Upload\Functions; use Volc\Service\Vod\Upload\VodUpload; use Volc\Service\Vod\Upload\OptionInfo; use Volc\Service\Vod\Upload\Template; // Create a VOD instance in the specified region. // $client = Volc\Service\Vod\Vod::getInstance('cn-north-1'); $client = VodUpload::getInstance(); // Configure your Access Key ID (AK) and Secret Access Key (SK) in the environment variables or in the local ~/.volc/config file. For detailed instructions, see https://www.volcengine.com/docs/4/4408. // The SDK will automatically fetch the AK and SK from the environment variables or the ~/.volc/config file as needed. // During testing, you may use the following code snippet. However, do not store the AK and SK directly in your project code to prevent potential leakage and safeguard the security of all resources associated with your account. // $client->setAccessKey('your ak'); // $client->setSecretKey('your sk'); $space = 'your space'; $filePath = "file path"; $functions = new Functions(); $functions->addGetMetaFunc(); $functions->addSnapshotTimeFunc(2.1); $impTemplate = new Template(); $impTemplate->TemplateIds = ["imp template id"]; $impTemplate->TemplateType = "imp"; $transcodeTemplate = new Template(); $transcodeTemplate->TemplateIds = ["transcode template id"]; $transcodeTemplate->TemplateType = "transcode"; $functions->addStartWorkflowTemplateFunc([$impTemplate, $transcodeTemplate]); $optionInfo = new OptionInfo(); $optionInfo->IsHlsIndexOnly = true; $functions->addOptionInfoFunc($optionInfo); $functions = $functions->getFunctionsString(); $request = new VodUploadMediaRequest(); $request->setSpaceName($space); $request->setFilePath($filePath); $request->setFunctions($functions); $request->setCallbackArgs("my callback"); $request->setFileName("hello/vod.mp4"); $request->setStorageClass(1); $request->setUploadHostPrefer(""); $response = new VodCommitUploadInfoResponse(); try { $response = $client->uploadMedia($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { echo $response->getResponseMetadata()->getError()->serializeToJsonString(), "\n"; } echo $response->serializeToJsonString(); echo "\n"; if ($response->getResult() != null) { echo $response->getResult()->getData()->getVid(), "\n"; echo $response->getResult()->getData()->getPosterUri(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getWidth(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getHeight(), "\n"; }
接口请求参数和返回参数详见 OpenAPI:获取上传地址和凭证及确认上传。
<?php require('../vendor/autoload.php'); use Volc\Service\Vod\Models\Request\VodUploadMediaRequest; use Volc\Service\Vod\Models\Response\VodCommitUploadInfoResponse; use Volc\Service\Vod\Upload\Functions; use Volc\Service\Vod\Upload\VodUpload; // Create a VOD instance in the specified region. // $client = Vod::getInstance('cn-north-1'); $client = VodUpload::getInstance(); // Configure your Access Key ID (AK) and Secret Access Key (SK) in the environment variables or in the local ~/.volc/config file. For detailed instructions, see https://www.volcengine.com/docs/4/4408. // The SDK will automatically fetch the AK and SK from the environment variables or the ~/.volc/config file as needed. // During testing, you may use the following code snippet. However, do not store the AK and SK directly in your project code to prevent potential leakage and safeguard the security of all resources associated with your account. // $client->setAccessKey('your ak'); // $client->setSecretKey('your sk'); $space = 'your space'; $filePath = "file path"; Functions::addGetMetaFunc(); Functions::addSnapshotTimeFunc(2.1); $functions = Functions::getFunctionsString(); $request = new VodUploadMediaRequest(); $request->setSpaceName($space); $request->setFilePath($filePath); $request->setFunctions($functions); $request->setCallbackArgs("my callback"); $response = new VodCommitUploadInfoResponse(); try { $response = $client->uploadMedia($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response->getResponseMetadata()->getError() != null) { print_r($response->getResponseMetadata()->getError()); } echo $response->serializeToJsonString(); echo "\n"; echo $response->getResult()->getData()->getVid(), "\n"; echo $response->getResult()->getData()->getPosterUri(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getWidth(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getHeight(), "\n";
视频点播目前支持以下两个版本的获取上传地址和凭证和确认上传接口:
接口请求参数和返回参数详见 OpenAPI:获取上传地址和凭证及确认上传。
注意
版本号为 2022-01-01 时,上传文件必须携带文件后缀。例如,如需上传 MP4 文件,携带 .mp4
或 .MP4
。
<?php require('../../vendor/autoload.php'); use Volc\Service\Vod\Models\Request\VodUploadMaterialRequest; use Volc\Service\Vod\Models\Response\VodCommitUploadInfoResponse; use Volc\Service\Vod\Upload\Functions; use Volc\Service\Vod\Upload\VodUpload; use Volc\Service\Vod\Upload\OptionInfo; // Create a VOD instance in the specified region. // $client = Volc\Service\Vod\Vod::getInstance('cn-north-1'); $client = VodUpload::getInstance(); // Configure your Access Key ID (AK) and Secret Access Key (SK) in the environment variables or in the local ~/.volc/config file. For detailed instructions, see https://www.volcengine.com/docs/4/4408. // The SDK will automatically fetch the AK and SK from the environment variables or the ~/.volc/config file as needed. // During testing, you may use the following code snippet. However, do not store the AK and SK directly in your project code to prevent potential leakage and safeguard the security of all resources associated with your account. // $client->setAccessKey('your ak'); // $client->setSecretKey('your sk'); $space = 'your space'; $filePath = "file path"; //音视频素材上传 $functions = new Functions(); $functions->addGetMetaFunc(); $functions->addSnapshotTimeFunc(2.1); $optionInfo = new OptionInfo(); $optionInfo->Title = '素材测试视频'; $optionInfo->Tags = 'test'; $optionInfo->Description = '素材测试,视频文件'; $optionInfo->Category = 'video'; $optionInfo->RecordType = 2; $optionInfo->Format = 'mp4'; $functions->addOptionInfoFunc($optionInfo); $functions = $functions->getFunctionsString(); $request = new VodUploadMaterialRequest(); $request->setSpaceName($space); $request->setFilePath($filePath); $request->setFunctions($functions); $request->setFileType("media"); $request->setCallbackArgs("my callback"); $request->setUploadHostPrefer(""); $response = new VodCommitUploadInfoResponse(); try { $response = $client->uploadMaterial($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { echo $response->getResponseMetadata()->getError(), "\n"; } echo $response->serializeToJsonString(); echo "\n"; if ($response->getResult() != null) { echo $response->getResult()->getData()->getMid(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getWidth(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getHeight(), "\n"; } ////图片素材上传 //$functions = new Functions(); //$functions->addGetMetaFunc(); // //$optionInfo = new OptionInfo(); //$optionInfo->Title = '素材测试图片'; //$optionInfo->Tags = 'test'; //$optionInfo->Description = '素材测试,图片文件'; //$optionInfo->Category = 'image'; //$optionInfo->RecordType = 2; //$optionInfo->Format = 'jpg'; //$functions->addOptionInfoFunc($optionInfo); // //$functions = $functions->getFunctionsString(); // //$request = new VodUploadMaterialRequest(); //$request->setSpaceName($space); //$request->setFilePath($filePath); //$request->setFunctions($functions); //$request->setFileType("image"); //$request->setFileName("hello/vod/image"); // //$request->setCallbackArgs("my callback"); // //$response = new VodCommitUploadInfoResponse(); //try { // $response = $client->uploadMaterial($request); //} catch (Exception $e) { // echo $e, "\n"; //} catch (Throwable $e) { // echo $e, "\n"; //} //if ($response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { // echo $response->getResponseMetadata()->getError(), "\n"; //} //echo $response->serializeToJsonString(); //echo "\n"; // //if ($response->getResult() != null) { // echo $response->getResult()->getData()->getMid(), "\n"; // echo $response->getResult()->getData()->getSourceInfo()->getWidth(), "\n"; // echo $response->getResult()->getData()->getSourceInfo()->getHeight(), "\n"; //} ////字幕素材上传 //$functions = new Functions(); //$functions->addGetMetaFunc(); // //$optionInfo = new OptionInfo(); //$optionInfo->Title = '素材测试字幕'; //$optionInfo->Tags = 'test'; //$optionInfo->Description = '素材测试,字幕文件'; //$optionInfo->Category = 'subtitle'; //$optionInfo->RecordType = 2; //$optionInfo->Format = 'vtt'; //$functions->addOptionInfoFunc($optionInfo); // //$functions = $functions->getFunctionsString(); // //$request = new VodUploadMaterialRequest(); //$request->setSpaceName($space); //$request->setFilePath($filePath); //$request->setFunctions($functions); //$request->setFileType("object"); //$request->setFileName("hello/vod/object"); // //$request->setCallbackArgs("my callback"); // //$response = new VodCommitUploadInfoResponse(); //try { // $response = $client->uploadMaterial($request); //} catch (Exception $e) { // echo $e, "\n"; //} catch (Throwable $e) { // echo $e, "\n"; //} //if ($response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { // echo $response->getResponseMetadata()->getError(), "\n"; //} //echo $response->serializeToJsonString(); //echo "\n"; // //if ($response->getResult() != null) { // echo $response->getResult()->getData()->getMid(), "\n"; // echo $response->getResult()->getData()->getSourceInfo()->getSize(), "\n"; //}
接口请求参数和返回参数详见 OpenAPI:获取上传地址和凭证及确认上传。
<?php require('../../vendor/autoload.php'); use Volc\Service\Vod\Models\Request\VodUploadMaterialRequest; use Volc\Service\Vod\Models\Response\VodCommitUploadInfoResponse; use Volc\Service\Vod\Upload\Functions; use Volc\Service\Vod\Upload\VodUpload; use Volc\Service\Vod\Upload\OptionInfo; // Create a VOD instance in the specified region. // $client = Vod::getInstance('cn-north-1'); $client = VodUpload::getInstance(); // Configure your Access Key ID (AK) and Secret Access Key (SK) in the environment variables or in the local ~/.volc/config file. For detailed instructions, see https://www.volcengine.com/docs/4/4408. // The SDK will automatically fetch the AK and SK from the environment variables or the ~/.volc/config file as needed. // During testing, you may use the following code snippet. However, do not store the AK and SK directly in your project code to prevent potential leakage and safeguard the security of all resources associated with your account. // $client->setAccessKey('your ak'); // $client->setSecretKey('your sk'); $space = 'your space'; $filePath = "file path"; //音视频素材上传 Functions::addGetMetaFunc(); Functions::addSnapshotTimeFunc(2.1); $optionInfo = new OptionInfo(); $optionInfo->Title = '素材测试视频'; $optionInfo->Tags = 'test'; $optionInfo->Description = '素材测试,视频文件'; $optionInfo->Category = 'video'; $optionInfo->RecordType = 2; $optionInfo->Format = 'mp4'; Functions::addOptionInfoFunc($optionInfo); $functions = Functions::getFunctionsString(); $request = new VodUploadMaterialRequest(); $request->setSpaceName($space); $request->setFilePath($filePath); $request->setFunctions($functions); $request->setFileType("media"); $request->setCallbackArgs("my callback"); $response = new VodCommitUploadInfoResponse(); try { $response = $client->uploadMaterial($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { echo $response->getResponseMetadata()->getError(), "\n"; } echo $response->serializeToJsonString(); echo "\n"; if ($response->getResult() != null) { echo $response->getResult()->getData()->getMid(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getWidth(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getHeight(), "\n"; } //图片素材上传 Functions::addGetMetaFunc(); $optionInfo = new OptionInfo(); $optionInfo->Title = '素材测试图片'; $optionInfo->Tags = 'test'; $optionInfo->Description = '素材测试,图片文件'; $optionInfo->Category = 'image'; $optionInfo->RecordType = 2; $optionInfo->Format = 'jpg'; Functions::addOptionInfoFunc($optionInfo); $functions = Functions::getFunctionsString(); $request = new VodUploadMaterialRequest(); $request->setSpaceName($space); $request->setFilePath($filePath); $request->setFunctions($functions); $request->setFileType("image"); $request->setCallbackArgs("my callback"); $response = new VodCommitUploadInfoResponse(); try { $response = $client->uploadMaterial($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { echo $response->getResponseMetadata()->getError(), "\n"; } echo $response->serializeToJsonString(); echo "\n"; if ($response->getResult() != null) { echo $response->getResult()->getData()->getMid(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getWidth(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getHeight(), "\n"; } //字幕素材上传 Functions::addGetMetaFunc(); $optionInfo = new OptionInfo(); $optionInfo->Title = '素材测试字幕'; $optionInfo->Tags = 'test'; $optionInfo->Description = '素材测试,字幕文件'; $optionInfo->Category = 'subtitle'; $optionInfo->RecordType = 2; $optionInfo->Format = 'vtt'; Functions::addOptionInfoFunc($optionInfo); $functions = Functions::getFunctionsString(); $request = new VodUploadMaterialRequest(); $request->setSpaceName($space); $request->setFilePath($filePath); $request->setFunctions($functions); $request->setFileType("object"); $request->setCallbackArgs("my callback"); $response = new VodCommitUploadInfoResponse(); try { $response = $client->uploadMaterial($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { echo $response->getResponseMetadata()->getError(), "\n"; } echo $response->serializeToJsonString(); echo "\n"; if ($response->getResult() != null) { echo $response->getResult()->getData()->getMid(), "\n"; echo $response->getResult()->getData()->getSourceInfo()->getSize(), "\n"; }
接口请求参数和返回参数详见 OpenAPI:URL 批量拉取上传。
<?php require('../../vendor/autoload.php'); // Create a VOD instance in the specified region. // $client = Vod::getInstance('cn-north-1'); $client = Volc\Service\Vod\Vod::getInstance(); // Configure your Access Key ID (AK) and Secret Access Key (SK) in the environment variables or in the local ~/.volc/config file. For detailed instructions, see https://www.volcengine.com/docs/4/4408. // The SDK will automatically fetch the AK and SK from the environment variables or the ~/.volc/config file as needed. // During testing, you may use the following code snippet. However, do not store the AK and SK directly in your project code to prevent potential leakage and safeguard the security of all resources associated with your account. // $client->setAccessKey('your ak'); // $client->setSecretKey('your sk'); $request = new Volc\Service\Vod\Models\Request\VodUrlUploadRequest(); $request->setSpaceName("your SpaceName"); $urlSet = new Volc\Service\Vod\Models\Business\VodUrlUploadURLSet(); $urlSet->setSourceUrl(""); $urlSet->setStorageClass(1); $urlSet->setFileExtension(".mp4"); $urlSet->setCallbackArgs(""); $customHeaders = ['your header key' => "your header value"]; // 自定义 Header,业务希望访问源视频 URL 携带的 Header(例如User-Agent)可以通过该参数传入,非必须字段 $urlSet->setCustomURLHeaders($customHeaders); $request->setURLSets([$urlSet]); $response = new Volc\Service\Vod\Models\Response\VodUrlUploadResponse(); try { $response = $client->uploadMediaByUrl($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response != null && $response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { echo $response->getResponseMetadata()->getError()->serializeToJsonString(), "\n"; } else { echo $response->serializeToJsonString(), "\n"; }
接口请求参数和返回参数说明详见 ApplyUploadInfo。
<?php require('../../vendor/autoload.php'); // Create a VOD instance in the specified region. // $client = Volc\Service\Vod\Vod::getInstance('cn-north-1'); $client = Volc\Service\Vod\Vod::getInstance(); // Configure your Access Key ID (AK) and Secret Access Key (SK) in the environment variables or in the local ~/.volc/config file. For detailed instructions, see https://www.volcengine.com/docs/4/4408. // The SDK will automatically fetch the AK and SK from the environment variables or the ~/.volc/config file as needed. // During testing, you may use the following code snippet. However, do not store the AK and SK directly in your project code to prevent potential leakage and safeguard the security of all resources associated with your account. // $client->setAccessKey('your ak'); // $client->setSecretKey('your sk'); $request = new Volc\Service\Vod\Models\Request\VodApplyUploadInfoRequest(); $request->setSpaceName("your SpaceName"); $request->setSessionKey("your SessionKey"); $request->setFileSize(0); $request->setFileType("your FileType"); $request->setFileName("your FileName"); $request->setStorageClass(1); $request->setFileExtension("your FileExtension"); $request->setClientNetWorkMode("your ClientNetWorkMode"); $request->setClientIDCMode("your ClientIDCMode"); $request->setNeedFallback(false); $request->setUploadHostPrefer("your UploadHostPrefer"); $response = new Volc\Service\Vod\Models\Response\VodApplyUploadInfoResponse(); try { $response = $client->applyUploadInfo($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response != null && $response->getResponseMetadata() != null && $response->getResponseMetadata()->getError() != null) { echo $response->getResponseMetadata()->getError()->serializeToJsonString(), "\n"; } else { echo $response->serializeToJsonString(), "\n"; }
接口请求参数和返回参数详见 OpenAPI:查询 URL 批量上传任务状态。
<?php require('../vendor/autoload.php'); use Volc\Service\Vod\Models\Business\VodURLSet; use Volc\Service\Vod\Models\Request\VodQueryUploadTaskInfoRequest; use Volc\Service\Vod\Models\Response\VodQueryUploadTaskInfoResponse; use Volc\Service\Vod\Vod; // Create a VOD instance in the specified region. // $client = Vod::getInstance('cn-north-1'); $client = Vod::getInstance(); // Configure your Access Key ID (AK) and Secret Access Key (SK) in the environment variables or in the local ~/.volc/config file. For detailed instructions, see https://www.volcengine.com/docs/4/4408. // The SDK will automatically fetch the AK and SK from the environment variables or the ~/.volc/config file as needed. // During testing, you may use the following code snippet. However, do not store the AK and SK directly in your project code to prevent potential leakage and safeguard the security of all resources associated with your account. // $client->setAccessKey('your ak'); // $client->setSecretKey('your sk'); $jobId = 'url jobId'; $jobIds = [$jobId]; $request = new VodQueryUploadTaskInfoRequest(); $request->setJobIds(implode(",", $jobIds)); $response = new VodQueryUploadTaskInfoResponse(); try { $response = $client->queryUploadTaskInfo($request); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } if ($response->getResponseMetadata()->getError() != null) { print_r($response->getResponseMetadata()->getError()); } echo $response->serializeToJsonString(); echo "\n"; $mediaInfo = new VodURLSet(); $mediaInfo = $response->getResult()->getData()->getMediaInfoList()[0]; echo $mediaInfo->getRequestId(), "\n"; echo $mediaInfo->getState(), "\n";