媒体上传

点播服务端提供丰富的上传接口,支持开发者采用不同的上传方式实现媒体上传。本文介绍PHP SDK调用服务端上传接口的使用场景和调用示例。

使用场景

注意

本文仅提供API调用示例,即在点播服务中获取上传凭证和地址等操作示例。要实现完整的媒体文件上传逻辑,请参考下表跳转至对应的上传方式和使用场景。

接口

使用场景

获取音视频上传地址和凭证

  • OSS原生SDK上传场景下,用户应用服务器集成点播服务端SDK并调用相关接口获取或刷新上传地址和凭证。获取到的上传地址和凭证需要Base64解码后作为初始化OSS上传客户端实例的参数。详情请参见基于OSS原生SDK上传

  • 点播客户端上传SDK场景下,用户应用服务器集成点播服务端SDK并调用相关接口获取或刷新上传地址和凭证。获取到的上传地址和凭证无需解码即可下发给客户端。详情请参见客户端上传SDK指引

刷新音视频上传凭证

获取图片上传地址和凭证

获取辅助媒资上传地址和凭证

URL批量拉取上传

  • 调用URL批量拉取上传接口实现离线拉取上传。这种方式可以免去先将文件下载到本地服务器或终端再使用上传SDK上传到点播的过程。

  • 调用获取URL上传信息获取上传进度。

获取URL上传信息

前提条件

  • 调用接口前请先安装SDK。操作指引请参见安装

  • 调用接口前请先初始化客户端实例。操作指引请参见初始化

    说明

    以下示例均通过AccessKey初始化客户端实例。

接口调用示例

获取音/视频上传地址和凭证

调用CreateUploadVideo接口,完成获取音/视频上传地址和凭证功能。

接口参数和返回字段请参见CreateUploadVideo。调用示例如下:

<?php
require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php';   // 假定您的源码文件和aliyun-php-sdk处于同一目录
use vod\Request\V20170321 as vod;

function initVodClient($accessKeyId, $accessKeySecret) {
    $regionId = 'cn-shanghai';  // 点播服务接入区域
    $profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
    return new DefaultAcsClient($profile);
}

/**
 * 获取音/视频上传地址和凭证
 * @param client 发送请求客户端
 * @return CreateUploadVideoResponse 获取音/视频上传地址和凭证响应数据
 */
function createUploadVideo($client) {
    $request = new vod\CreateUploadVideoRequest();
    $request->setTitle("Sample Title");
    $request->setFileName("videoFile.mov");
    $request->setDescription("Video Description");
    $request->setCoverURL("http://192.168.0.0/16/tps/TB1qnJ1PVXXXXXCXXXXXXXXXXXX-700-700.png");
    $request->setTags("tag1,tag2");

    $request->setAcceptFormat('JSON');
    return $client->getAcsResponse($request);
}

try {
    $client = initVodClient('<AccessKeyId>', '<AccessKeySecret>');
    $uploadInfo = createUploadVideo($client);
    var_dump($uploadInfo);
} catch (Exception $e) {
    print $e->getMessage()."\n";
}

刷新音/视频上传凭证

调用RefreshUploadVideo接口,完成刷新音/视频上传凭证功能。

接口参数和返回字段请参见RefreshUploadVideo。调用示例如下:

<?php
require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php';   // 假定您的源码文件和aliyun-php-sdk处于同一目录
use vod\Request\V20170321 as vod;

function initVodClient($accessKeyId, $accessKeySecret) {
    $regionId = 'cn-shanghai';  // 点播服务接入区域
    $profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
    return new DefaultAcsClient($profile);
}

/**
 * 刷新音/视频上传凭证
 * @param client 发送请求客户端
 * @return RefreshUploadVideoResponse 刷新音/视频上传凭证响应数据
 */
function refreshUploadVideo($client, $videoId) {
    $request = new vod\RefreshUploadVideoRequest();
    $request->setVideoId($videoId);
    $request->setAcceptFormat('JSON');
    return $client->getAcsResponse($request);
}

try {
    $client = initVodClient('<AccessKeyId>', '<AccessKeySecret>');
    $refreshInfo = refreshUploadVideo($client, '<MediaId>');
    var_dump($refreshInfo);
} catch (Exception $e) {
    print $e->getMessage()."\n";
}

获取图片上传地址和凭证

调用CreateUploadImage接口,完成获取图片上传地址和凭证功能。

接口参数和返回字段请参见CreateUploadImage。调用示例如下:

<?php
require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php';   // 假定您的源码文件和aliyun-php-sdk处于同一目录
use vod\Request\V20170321 as vod;

function initVodClient($accessKeyId, $accessKeySecret) {
    $regionId = 'cn-shanghai';  // 点播服务接入区域
    $profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
    return new DefaultAcsClient($profile);
}

/**
 * 获取图片上传地址和凭证
 * @param client 发送请求客户端
 * @return CreateUploadImageResponse 获取图片上传地址和凭证响应数据
 */
function createUploadImage($client, $imageType, $imageExt) {
    $request = new vod\CreateUploadImageRequest();
    $request->setImageType($imageType);
    $request->setImageExt($imageExt);
    $request->setAcceptFormat('JSON');
    return $client->getAcsResponse($request);
}

try {
    $client = initVodClient('<AccessKeyId>', '<AccessKeySecret>');

    $imageInfo = createUploadImage($client, 'cover', 'jpg');
    var_dump($imageInfo);
} catch (Exception $e) {
    print $e->getMessage()."\n";
}

获取辅助媒资上传地址和凭证

调用CreateUploadAttachedMedia接口,完成获取辅助媒资上传地址和凭证功能。

接口参数和返回字段请参见CreateUploadAttachedMedia。调用示例如下:

<?php
require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php';   // 假定您的源码文件和aliyun-php-sdk处于同一目录
use vod\Request\V20170321 as vod;

function initVodClient($accessKeyId, $accessKeySecret) {
    $regionId = 'cn-shanghai';  // 点播服务接入区域
    $profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
    return new DefaultAcsClient($profile);
}

/**
 * 获取辅助媒资(水印、字幕等)上传地址和凭证
 * @param client 发送请求客户端
 * @return CreateUploadAttachedMediaResponse 获取辅助媒资上传地址和凭证响应数据
 */
function createUploadAttachedMedia($client) {
    $request = new vod\CreateUploadAttachedMediaRequest();
    $request->setBusinessType("watermark");
    $request->setMediaExt("gif");
    $request->setTitle("this is a sample");

    return $client->getAcsResponse($request);
}


try {
    $client = initVodClient('<AccessKeyId>', '<AccessKeySecret>');

    $result = createUploadAttachedMedia($client);
    var_dump($result);
} catch (Exception $e) {
    print $e->getMessage()."\n";
}

URL批量拉取上传

调用UploadMediaByURL接口,完成URL批量拉取上传功能。

接口参数和返回字段请参见UploadMediaByURL。调用示例如下:

<?php
require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php';   // 假定您的源码文件和aliyun-php-sdk处于同一目录
use vod\Request\V20170321 as vod;

function initVodClient($accessKeyId, $accessKeySecret) {
    $regionId = 'cn-shanghai';  // 点播服务接入区域
    $profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
    return new DefaultAcsClient($profile);
}

/**
 * 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 = 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";
}

获取URL上传信息

调用GetURLUploadInfos接口,完成获取URL上传信息功能。

接口参数和返回字段请参见GetURLUploadInfos。调用示例如下:

<?php
require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php';   // 假定您的源码文件和aliyun-php-sdk处于同一目录
use vod\Request\V20170321 as vod;

function initVodClient($accessKeyId, $accessKeySecret) {
    $regionId = 'cn-shanghai';  // 点播服务接入区域
    $profile = DefaultProfile::getProfile($regionId, $accessKeyId, $accessKeySecret);
    return new DefaultAcsClient($profile);
}

/**
 * 获取URL上传信息
 * @param client 发送请求客户端
 * @return GetURLUploadInfosResponse 获取URL上传信息响应数据
 */
function getURLUploadInfos($client) {
    $request = new vod\GetURLUploadInfosRequest();

    // URL列表
    $urls = array();
    $urls[] = "http://192.168.0.0/16/sample1.mp4";
    $urls[] = "http://192.168.0.0/16/sample2.mp4";

    // 对URL进行编码
    $uploadURLs = array();
    foreach ($urls as $url) {
        $uploadURLs[] = urlencode($url);
    }

    // 设置上传的URL列表,用逗号分隔
    $request->setUploadURLs(implode(",", $uploadURLs));

    // 也可以传入jobId查询
    //$request->setJobIds("jobId1****,jobId2****")

    return $client->getAcsResponse($request);
}


try {
    $client = initVodClient('<AccessKeyId>', '<AccessKeySecret>');

    $result = getURLUploadInfos($client);
    var_dump($result);
} catch (Exception $e) {
    print $e->getMessage()."\n";
}
阿里云首页 视频点播 相关技术圈