阿里云VOD视频点播

一.开通阿里云VOD

新手指引文档:https://help.aliyun.com/zh/vod/getting-started/getting-started?spm=a2c4g.11186623.0.0.46c751a6bH1ffm#section-ixw-emd-fye

1.开通VOD

视频点播(ApsaraVideo VoD,简称VOD)是集视频采集、编辑、上传、媒体资源管理、自动化转码处理、视频审核分析、分发加速于一体的一站式音视频点播解决方案。登录阿里云,在产品 找到 视频点播VOD ,点击开通 ,进入管理控制台
image.png

2.存储管理

  1. 在视频点播控制台左侧导航栏的配置管理区域,选择媒资管理配置 > 存储管理。
  2. 在视频点播控制台上方菜单栏的服务区域,选择您要开通的区域(例如选择华东2(上海))。
  3. 单击启用分配存储Bucket。

image.png

  1. 单击管理,根据您的需求配置权限、回源地址等设置。

image.png

3.编码设置

转码模板可用于视频的转码处理,模板中设置的参数将作为处理视频的参数。您可以创建多种类型的转码模板,用于视频转码。

  1. 在视频点播控制台左侧导航栏的配置管理区域,选择媒体处理配置 > 转码模板组。该服务区域在开通存储管理后,系统会自动为您添加不转码模板组、TranscodeTemplateGroup转码模板组。
  2. 单击添加转码模板组,进入添加转码模版组页面。
  3. 输入模板组名称,在普通转码模板区域单击添加模板,您可以根据提示配置转码模板。

image.png

  1. 单击保存,界面自动跳转至转码模板组页面。在转码模板组页面,已经存在新创建的转码模板组。您可以对转码模板组进行编辑、删除等操作。

image.png

4.视频管理

上传音视频是将音视频上传到您的视频点播存储Bucket中。上传完成后可以对音视频进行处理和分发等操作。

  1. 在视频点播控制台左侧导航栏的媒资库区域,单击音/视频
  2. 单击上传音/视频,进入上传音/视频页面。
  3. 单击添加音/视频,选择上传的方式和处理类型(转码模板或工作流)。
    • 本地上传:需通过点击或者文件拖拽的方式将待上传的文件选中到点播服务中。
    • URL拉取(仅上海地域支持):需填写待上传文件的URL、扩展名及音/视频名称。
  4. 单击开始上传。在上传音/视频页面会显示视频上传的状态,当状态从正在上传变为上传成功,表示视频已上传。您可以返回音/视频页面,查看上传成功的视频。

说明 只要在上传过程中涉及到转码,就会产生转码费用。如果不想涉及费用,建议您使用不转码模板组。

image.png

5.管理AccessKey

点击头像 -> AccessKey 管理 进入密钥管理界面
image.png
AccessKey ID 和 AccessKey Secret 是您访问阿里云 API 的密钥,具有该账户完全的权限,建议使用子用户AccessKey
image.png
点击 开始使用子用户AccessKey 点击创建用户
image.png
创建用户,指定用户名,和API权限,点击确定
image.png
创建好账户后,先把密钥复制下来后面会用到
image.png
然后点击 用户名,进入用户详情页 找到 权限管理 - 点击新增授权 - 选择权限 - 把VOD相关的权限加入右边的面板,如下
image.png

到这里我们的之账户创建成功。

二.视频点播

1.入门代码

基于OSS原生SDK上传 ,参考文档:https://help.aliyun.com/zh/vod/user-guide/upload-media-files-by-using-oss-sdks?spm=a2c4g.11186623.0.0.1f02273fj4lxNJ

视频点播面向开发者提供了丰富的上传方式,其中上传SDK(分服务端和客户端)封装了上传相关的基础逻辑,仅需简单配置即可实现上传功能,推荐使用

基于OSS原生SDK上传需要开发者自行实现所有上传逻辑,包括在点播服务获取上传地址和凭证、Base64解码上传地址和凭证以及调用OSS能力完成上传。
以集成点播服务端SDK获取上传地址和凭证为例,完整的上传流程如下图所示:
image.png
流程详解

  1. 上传应用服务器使用RAM用户AK方式(AccessKey ID和AccessKey Secret)或STS临时AK初始化点播客户端。
  2. 上传应用服务器使用点播服务端SDK调用上传地址和凭证相关接口获取上传地址、上传凭证及媒资信息。
  3. 点播服务在请求结果中返回Base64加密的上传地址(UploadAddress)、上传凭证(UploadAuth)、和媒体ID等信息。上传应用服务器可根据返回结果解析参数作为初始化OSS原生SDK的入参。
  4. 上传应用服务器使用解析后的上传地址(UploadAddress)和授权信息(UploadAuth),通过STS方式初始化OSS客户端。
  5. 上传应用服务器使用OSS SDK调用OSS上传相关接口将媒体文件上传至指定的存储地址。
  6. OSS服务返回上传结果。

Java入门案例:https://help.aliyun.com/zh/vod/user-guide/upload-media-files-by-using-oss-sdks?spm=a2c4g.11186623.0.0.24222dadolkgd8#section-iny-ln9-m7z

<dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-core</artifactId>
      <version>4.6.0</version>
  </dependency>
  <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-vod</artifactId>
      <version>2.16.10</version>
  </dependency>
  <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.83</version>
  </dependency>
  <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-kms</artifactId>
      <version>2.10.1</version>
  </dependency>
  <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.15.1</version>
  </dependency>

下面是基于OSS上传视频的入门代码

import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.OSSClient;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.CreateUploadVideoRequest;
import com.aliyuncs.vod.model.v20170321.CreateUploadVideoResponse;
import org.apache.commons.codec.binary.Base64;

import java.io.File;

/**
 * descript
 */
public class UploadDemo {
    
    

    //初始化VOD客户端
    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
    
    
        // 根据点播接入服务所在的Region填写,例如:接入服务在上海,则填cn-shanghai;其他区域请参见存储说明。
        String regionId = "cn-shanghai";
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    }
    //创建视频上传结果对象
    public static CreateUploadVideoResponse createUploadVideo(DefaultAcsClient vodClient) throws ClientException {
    
    
        CreateUploadVideoRequest request = new CreateUploadVideoRequest();
        request.setFileName("vod_test.mp4");
        request.setTitle("this is title");
        //设置请求超时时间
        request.setSysReadTimeout(1000);
        request.setSysConnectTimeout(1000);
        return vodClient.getAcsResponse(request);
    }

    //初始OSS客户端
    public static OSSClient initOssClient(JSONObject uploadAuth, JSONObject uploadAddress) {
    
    
        String endpoint = uploadAddress.getString("Endpoint");
        String accessKeyId = uploadAuth.getString("AccessKeyId");
        String accessKeySecret = uploadAuth.getString("AccessKeySecret");
        String securityToken = uploadAuth.getString("SecurityToken");
        return new OSSClient(endpoint, accessKeyId, accessKeySecret, securityToken);
    }
    //上传文件
    public static void uploadLocalFile(OSSClient ossClient, JSONObject uploadAddress, String localFile) {
    
    
        String bucketName = uploadAddress.getString("Bucket");
        String objectName = uploadAddress.getString("FileName");
        File file = new File(localFile);
        ossClient.putObject(bucketName, objectName, file);
    }

    public static void main(String[] argv) {
    
    
        //您的AccessKeyId
        String accessKeyId = "xxxxx";
        //您的AccessKeySecret
        String accessKeySecret = "xxxxx";
        //需要上传到VOD的本地视频文件的完整路径,需要包含文件扩展名
        String localFile = "D:\\临时资料\\xxx.mp4";
        try {
    
    
            // 初始化VOD客户端并获取上传地址和凭证
            DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
            //创建一个相应对象
            CreateUploadVideoResponse createUploadVideoResponse = createUploadVideo(vodClient);
            // 执行成功会返回VideoId、UploadAddress和UploadAuth
            String videoId = createUploadVideoResponse.getVideoId();
            //解析拿到结果对象
            JSONObject uploadAuth = JSONObject.parseObject(decodeBase64(createUploadVideoResponse.getUploadAuth()));
            JSONObject uploadAddress = JSONObject.parseObject(decodeBase64(createUploadVideoResponse.getUploadAddress()));

            // 使用UploadAuth和UploadAddress初始化OSS客户端
            OSSClient ossClient = initOssClient(uploadAuth, uploadAddress);
            // 上传文件,注意是同步上传会阻塞等待,耗时与文件大小和网络上行带宽有关
            uploadLocalFile(ossClient, uploadAddress, localFile);
            System.out.println("Put local file succeed, VideoId : " + videoId);
        } catch (Exception e) {
    
    
            System.out.println("Put local file fail, ErrorMessage : " + e.getLocalizedMessage());
        }
    }

    private static String decodeBase64(String data) {
    
    
        return new String(Base64.decodeBase64(data));
    }
}

注意有三个地方需求修改

  • accessKeyId : 您的AccessKeyId
  • accessKeySecret : 您的AccessKeySecret
  • String regionId = “cn-shanghai”; 这个是地区,需要去VOD 控制台 - 存储管理去找上传地址比如我的是:xxxxxxx[.oss-cn-shanghai.aliyuncs.com](https://vod.console.aliyun.com/?spm=5176.12818093_-1363046575.top-nav.22.3be916d0sNjf6B#/storage/outin-e978d136329c11ee80ad00163e1a3b4a.oss-cn-shanghai.aliyuncs.com/manage) 华东上海,那么regionId就应该是 cn-shanghai

上传成功后,从控制台可以看到视频ID,播放的时候是需要用到视频ID的
image.png

2.播放视频

去到VOD控制台 - 媒体库 - 找到上传成功的视频
image.png
点击管理 - 在基础信息中可以看到视频的基本情况,包括视频ID,存储地址,点击 web播放器代码,官方提供了视频播放的Html 和 JS 脚本
image.png
在电脑桌面创建一个 pay.html文件,然后把播放器代码拷贝进去,然后需要指定2二个东西

  • vid : 视频的id
  • payauth : 播放凭证

image.png

3.获取payauth

官方说明:请复制代码并补充playauth值后再使用,playauth获取方式请参考文档 获取播放凭证 , 我们根据文档去获取播放凭证 ,文档地址:https://help.aliyun.com/zh/vod/developer-reference/api-vod-2017-03-21-getvideoplayauth ,这里可以先试用调试 - 拿到播放凭证
image.png
进入调试页面,选择服务器地址 ,制定VideoId 视频ID,然后点击发起调用 ,就可以获得播放凭证啦。
image.png
把播放凭证拷贝到播放器代码中,刷新页面尝试播放,而且通过network可以看得出,采用的是视频点播,边下边播的方式。
image.png

获取播放凭证代码可以在调试 - SDK实例 里面直接下载官方代码
image.png
需要导入依赖


<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>vod20170321</artifactId>
    <version>2.16.16</version>
</dependency>

获取播放凭证代码

//获取播放凭证
public static String getPayAuth(String videoId) throws Exception {
    
    
    // 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html
    com.aliyun.vod20170321.Client client =
            createClient("你的accessKeyId", "你的accessKeySecrt");

    com.aliyun.vod20170321.models.GetVideoPlayAuthRequest getVideoPlayAuthRequest =
            new com.aliyun.vod20170321.models.GetVideoPlayAuthRequest().setVideoId(videoId);

    com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
    // 复制代码运行请自行打印 API 的返回值
    GetVideoPlayAuthResponse videoPlayAuthWithOptions = client.getVideoPlayAuthWithOptions(getVideoPlayAuthRequest, runtime);
    String playAuth = videoPlayAuthWithOptions.getBody().getPlayAuth();
    return playAuth;
}

相信你根据文档吧流程跑完了,接下来就可以把代码接入到你的项目中的

猜你喜欢

转载自blog.csdn.net/u014494148/article/details/132144301