最近更新时间:2024.03.06 20:05:10
首次发布时间:2021.02.23 10:42:40
本文为您提供了服务端 PHP SDK 的媒资播放模块相关的 API 调用示例。主要包含:签发 PlayAuthToken、获取播放地址、签发私有 DRM 加密 AuthToken 等。
使用前请先完成初始化,参考初始化
由 App/Web Server 持有的 AK/SK 在本地签出,不依赖外网。若希望同时生成多个 PlayAuthToken
,您可以循环调用生成方法。PlayAuthToken
用于客户端播放,详见客户端播放。
<?php require('../vendor/autoload.php'); use Volc\Service\Vod\Models\Request\VodGetPlayInfoRequest; use Volc\Service\Vod\Models\Response\VodGetPlayInfoResponse; use Volc\Service\Vod\Vod; $client = Vod::getInstance(); // $client->setAccessKey(""); // $client->setSecretKey(""); $vid = "your vid"; $expire = 600; // token有效期 $req = new VodGetPlayInfoRequest(); $req->setVid($vid); $req->setSsl('1'); try { $response = $client->getPlayAuthToken($req); } catch (Exception $e) { echo $e, "\n"; } catch (Throwable $e) { echo $e, "\n"; } echo $response;
接口请求参数和返回参数详见OpenAPI:获取播放地址
<?php require('../../vendor/autoload.php'); $client = Volc\Service\Vod\Vod::getInstance(); $client->setAccessKey('your ak'); $client->setSecretKey('your sk'); $request = new Volc\Service\Vod\Models\Request\VodGetPlayInfoRequest(); $request->setVid("your Vid"); $request->setFormat("your Format"); $request->setCodec("your Codec"); $request->setDefinition("your Definition"); $request->setFileType("your FileType"); $request->setLogoType("your LogoType"); $request->setBase64("your Base64"); $request->setSsl("your Ssl"); $request->setNeedThumbs("your NeedThumbs"); $request->setNeedBarrageMask("your NeedBarrageMask"); $request->setCdnType("your CdnType"); $request->setUnionInfo("your UnionInfo"); $request->setHDRDefinition("your HDRDefinition"); $request->setPlayScene("your PlayScene"); $request->setDrmExpireTimestamp("your DrmExpireTimestamp"); $request->setQuality("your Quality"); $request->setPlayConfig("your PlayConfig"); $request->setNeedOriginal("your NeedOriginal"); $request->setForceExpire("your ForceExpire"); $response = new Volc\Service\Vod\Models\Response\VodGetPlayInfoResponse(); try { $response = $client->getPlayInfo($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"; }
由 App/Web Server 持有的 AK/SK 在本地签出,不依赖外网。若希望同时生成多个 PrivateDrmPlayAuth
,您可以循环调用生成方法。PrivateDrmPlayAuth
用于 Web 客户端播放视频点播自研 DRM 加密音视频,详见客户端播放。
说明
在 Web 端播放时,调用 GetPrivateDrmAuthToken
生成方法,需要指定参数 DrmType
取值为 webdevice
。
<?php require('../../vendor/autoload.php'); $client = Volc\Service\Vod\Vod::getInstance(); $client->setAccessKey('your ak'); $client->setSecretKey('your sk'); $request = new Volc\Service\Vod\Models\Request\VodGetPrivateDrmPlayAuthRequest(); $request->setDrmType("your DrmType"); $request->setVid("your Vid"); $request->setPlayAuthIds("your PlayAuthIds"); $request->setUnionInfo("your UnionInfo"); $response = new Volc\Service\Vod\Models\Response\VodGetPrivateDrmPlayAuthResponse(); try { $response = $client->getPrivateDrmPlayAuth($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"; }
由 App/Web Server 持有的 AK/SK 在本地签出,不依赖外网。若希望同时生成多个 HlsDecryptionKey
,您可以循环调用生成方法。HlsDecryptionKey
用于 Web 客户端播放 HLS 加密音视频,详见客户端播放。
<?php require('../../vendor/autoload.php'); $client = Volc\Service\Vod\Vod::getInstance(); $client->setAccessKey('your ak'); $client->setSecretKey('your sk'); $request = new Volc\Service\Vod\Models\Request\VodGetHlsDecryptionKeyRequest(); $request->setDrmAuthToken("your DrmAuthToken"); $request->setAk("your Ak"); $request->setSource("your Source"); $response = new Volc\Service\Vod\Models\Response\VodGetHlsDecryptionKeyResponse(); try { $response = $client->getHlsDecryptionKey($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"; }