阿里云视频点播技术

Posted 别是雨萧吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云视频点播技术相关的知识,希望对你有一定的参考价值。

一.去官网开通视频点播功能

视频点播是集音视频采集,编辑,上传,自动化转码处理,媒体资源管理,分发加速于一体的一站式音视频点播解决方案。
开通的时候记得选按流量计费。

 

 

二.管理控制台的使用

1.媒资库->音/视频
        这里可以看到上传到阿里云视频点播中的视频,也可以上传音/视频。上传视频后,点击"管理视频",阿里云会为每个上传的视频生成一个id和一个ip地址。拿着这个ip地址是可以直接访问这个视频的。
2.配置管理->媒资管理配置->存储管理
        这些视频还是存到OSS中去的,在“存储管理”可以设置OSS中的存储地址。
3.配置管理->媒资处理配置->转码模板组
        可以设置在存储的时候对视频的分辨率进行转码。可以添加转码模板组,在里面设置视频中的各个参数,编码格式,码率,帧率......
4.配置管理->分发加速配置->域名管理
        如果想要播放加密的视频必须要有域名。

三.java操作视频点播功能

文档链接:视频点播 - 帮助中心 - 阿里云


API和SDK有什么区别?
API:
        阿里云提供固定的地址(如http(s)://vod.cn-shanghai.aliyuncs.com/?Action=GetPlayInfo &VideoId=93ab850b4f654b6e91d24d81d44**** &<公共请求参数>),只需要调用这个固定的地址,向地址传递参数,实现功能。httpclient技术可以调用api地址。
SDK:
        在官方的API文档中表示,“该文档介绍了视频点播的所有API列表,但是强烈推荐使用服务管SDK”。因为API是相对底层的实现,SDK对API进行了封装,用起来相对简单。就像之前使用EasyExcel调用阿里云提供的接口去实现功能。这里我们选用javaSDK。

 1.引入依赖,配置文件

<dependencies>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
    </dependency>
    <dependency>
        <groupId>com.aliyun.oss</groupId>
        <artifactId>aliyun-sdk-oss</artifactId>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-vod</artifactId>
    </dependency>
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-sdk-vod-upload</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
    </dependency>

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
    </dependency>
</dependencies>

 # 服务端口
server.port=8003
# 服务名
spring.application.name=service-vod

# 环境设置:dev、test、prod
spring.profiles.active=dev

#阿里云 vod
#不同的服务器,地址不同
aliyun.vod.file.keyid=your accessKeyId
aliyun.vod.file.keysecret=your accessKeySecret

# 最大上传单个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB

2.初始化操作

其实就是创建出来一个client对象,之后的功能就是调用这个对象中的方法。

package com.stguigu.test;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
public class InItObject 
    //填入AccessKey信息
    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException 
        String regionId = "cn-shanghai";  // 点播服务接入地域
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    

3.获取视频播放地址

因为上传视频可以加密,加密之后使用加密之后的地址不能进行视频播放,所以在数据库中存储的不是视频的地址而是存储“视频id”,本节的播放地址和播放凭证都能通过视频id得到。

package com.stguigu.test;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoRequest;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse;
import java.util.List;
public class vodtest 
    //根据视频的id获得视频的地址
    public static void main(String[] args) throws ClientException 
        //1.创建初始化对象
        DefaultAcsClient defaultAcsClient =
                InItObject.initVodClient("LTAI5tFd7yXhLRRTwiYa1tiD", "mJpiyGZAlKA9Xvv1qhhk81WyS08Xa4");
        //2.创建获取视频地址request和response
        GetPlayInfoRequest getPlayInfoRequest = new GetPlayInfoRequest();
           //GetPlayInfoResponse response= new GetPlayInfoResponse();这个response对象可以由下面的那个getAcsResponse方法生成
        //3.向request对象中设置视频id
        getPlayInfoRequest.setVideoId("74522e6d85054873bc1689b8731bc0ca");//这里传的参数是视频的id
        //4.调用初始化对象里面的方法传递request,获取数据
        GetPlayInfoResponse acsResponse = defaultAcsClient.getAcsResponse(getPlayInfoRequest);
        List<GetPlayInfoResponse.PlayInfo> playInfoList = acsResponse.getPlayInfoList();
        for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) //播放地址
            System.out.print("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "\\n");
        
        System.out.print("VideoBase.Title = " + acsResponse.getVideoBase().getTitle() + "\\n");//视频的名称
    

4.获取视频播放凭证

package com.stguigu.test;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoRequest;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse;
import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthRequest;
import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthResponse;
import java.util.List;
public class vodtest 
    //根据视频的id获得视频的播放凭证
    public static void main(String[] args) throws ClientException 
        //1.创建初始化对象
        DefaultAcsClient defaultAcsClient =
                InItObject.initVodClient("LTAI5tFd7yXhLRRTwiYa1tiD", "mJpiyGZAlKA9Xvv1qhhk81WyS08Xa4");
        //2.创建获取视频地址request和response
        GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
        GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
        //3.向request对象中设置视频id
        request.setVideoId("74522e6d85054873bc1689b8731bc0ca");
        //4.调用初始化对象里面的方法传递request,获取数据
        response = defaultAcsClient.getAcsResponse(request);
        System.out.println("播放凭证是"+response.getPlayAuth());

    

5.上传视频到阿里云视频点播服务

SDK简介与下载 - 视频点播 - 阿里云
在这里下载jar包,然后在这个文件中有文件上传实例。注意这里面的aliyun-sdk-vod-upload不是开源的,所以这个要手动去安装。命令是:mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.11 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.11.jar

   //上传文件到视频点播
    public static void main(String[] args) throws ClientException 
            String accessKeyId="LTAI5tFd7yXhLRRTwiYa1tiD";
            String accessKeySecret="mJpiyGZAlKA9Xvv1qhhk81WyS08Xa4";
            String title="lalalala";//这个是设置上传后,文件在视频点播中的名字
            String fileName="C:\\\\Users\\\\26849\\\\Desktop\\\\在线教育--谷粒学院\\\\1-阿里云上传测试视频\\\\6 - What If I Want to Move Faster.mp4";//本地的路径
            UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
            /* 可指定分片上传时每个分片的大小,默认为2M字节 */
            request.setPartSize(2 * 1024 * 1024L);
            /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/
            request.setTaskNum(1);
            UploadVideoImpl uploader = new UploadVideoImpl();
            UploadVideoResponse response = uploader.uploadVideo(request);
            if (response.isSuccess()) 
                System.out.print("VideoId=" + response.getVideoId() + "\\n");//这个是生成的视频ID
             else 
                /* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */
                System.out.print("VideoId=" + response.getVideoId() + "\\n");
                System.out.print("ErrorCode=" + response.getCode() + "\\n");
                System.out.print("ErrorMessage=" + response.getMessage() + "\\n");
            

    

以上是关于阿里云视频点播技术的主要内容,如果未能解决你的问题,请参考以下文章

阿里云边缘节点ENS助力淘宝构建音视频通信网络

在生产环境中,阿里云如何构建高性能云原生容器网络?(含 PPT 下载)

阿里云张毅萍:构建边缘云全站加速网络体系

阿里云张毅萍:构建边缘云全站加速网络体系

阿里云经典网络和专有网络的区别

阿里云服务器专用网络安全组怎么设置