You need to enable JavaScript to run this app.
导航

媒资播放

最近更新时间2024.03.06 20:05:10

首次发布时间2021.02.23 10:42:40

本文为您提供了服务端 PHP SDK 的媒资播放模块相关的 API 调用示例。主要包含:签发 PlayAuthToken、获取播放地址、签发私有 DRM 加密 AuthToken 等。

初始化

使用前请先完成初始化,参考初始化

签发 PlayAuthToken

由 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";
}

签发私有 DRM 加密 AuthToken(PrivateDrmPlayAuth)

由 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";
}

签发 HLS 标准加密 AuthToken

由 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";
}