阿里云视频点播服务Vod工具类——实现视频上传、删除、播放

阿里云视频点播服务Vod工具类

maven依赖

如果报错或者是下载不下来,这里需要你把maven的镜像调成aliyun的才行

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.4.4</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-vod</artifactId>
    <version>1.0.9</version>
</dependency>

工具类实现

需要注意的是,你需要将ACCESS_KEY_ID、ACCESS_KEY_SECRET替换成你自己的阿里云账号的AccessKey信息,将REGION_ID替换成你自己的VOD服务所在的区域。同时,视频文件的路径需要根据你自己的实际情况来修改。

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.*;
import java.util.ArrayList;
import java.util.List;
public class VodUtil {
    // 阿里云账号AccessKey信息
    private static final String ACCESS_KEY_ID = "your_access_key_id";
    private static final String ACCESS_KEY_SECRET = "your_access_key_secret";
    // VOD客户端信息
    private static final String REGION_ID = "cn-shanghai";
    private static final String ENDPOINT = "https://vod." + REGION_ID + ".aliyuncs.com";
    // 默认视频封面
    private static final String DEFAULT_COVER_URL = "http://vod-image-sample.oss-cn-hangzhou.aliyuncs.com/example.jpg";
    // 初始化VOD客户端
    public static DefaultAcsClient init() {
        DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        client.setEndpoint(ENDPOINT);
        return client;
    }
    // 创建上传视频请求
    public static CreateUploadVideoResponse createUploadVideo(DefaultAcsClient client, String title, String fileName) throws ClientException {
        CreateUploadVideoRequest request = new CreateUploadVideoRequest();
        request.setTitle(title);
        request.setFileName(fileName);
        return client.getAcsResponse(request);
    }
    // 上传视频文件
    public static UploadVideoResponse uploadVideo(DefaultAcsClient client, String uploadAddress, String uploadAuth, String filePath, String fileName) throws ClientException {
        UploadVideoRequest request = new UploadVideoRequest(uploadAddress, uploadAuth, filePath, fileName);
        return client.getAcsResponse(request);
    }
    // 获取视频播放地址
    public static String getPlayUrl(DefaultAcsClient client, String videoId) throws ClientException {
        GetPlayInfoRequest request = new GetPlayInfoRequest();
        request.setVideoId(videoId);
        GetPlayInfoResponse response = client.getAcsResponse(request);
        List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();
        if (playInfoList != null && !playInfoList.isEmpty()) {
            return playInfoList.get(0).getPlayURL();
        }
        return null;
    }
    // 获取视频列表
    public static List<String> getVideoList(DefaultAcsClient client) throws ClientException {
        List<String> videoIds = new ArrayList<>();
        SearchMediaRequest request = new SearchMediaRequest();
        request.setPageSize(100);
        SearchMediaResponse response = client.getAcsResponse(request);
        List<SearchMediaResponse.Media> mediaList = response.getMediaList();
        for (SearchMediaResponse.Media media : mediaList) {
            videoIds.add(media.getVideo().getVideoId());
        }
        return videoIds;
    }
    // 删除视频
    public static void deleteVideo(DefaultAcsClient client, String videoId) throws ClientException {
        DeleteVideoRequest request = new DeleteVideoRequest();
        request.setVideoIds(videoId);
        client.getAcsResponse(request);
    }
    // 上传视频并返回视频ID和播放地址
    public static VideoInfo uploadAndPlay(String title, String filePath) throws ClientException {
        DefaultAcsClient client = init();
        // 创建上传视频请求
        CreateUploadVideoResponse uploadResponse = createUploadVideo(client, title, filePath);
        String videoId = uploadResponse.getVideoId();
        String uploadAddress = uploadResponse.getUploadAddress();
        String uploadAuth = uploadResponse.getUploadAuth();
        // 上传视频文件
        UploadVideoResponse response = uploadVideo(client, uploadAddress, uploadAuth, filePath, filePath);
        // 获取视频播放地址
        String playUrl = getPlayUrl(client, videoId);
        // 设置视频封面
        SetVideoCoverRequest coverRequest = new SetVideoCoverRequest();
        coverRequest.setVideoId(videoId);
        coverRequest.setCoverURL(DEFAULT_COVER_URL);
        client.getAcsResponse(coverRequest);
        // 封装视频信息并返回
        VideoInfo videoInfo = new VideoInfo();
        videoInfo.setVideoId(videoId);
        videoInfo.setPlayUrl(playUrl);
        return videoInfo;
    }
    // 获取所有视频的播放地址和ID
    public static List<VideoInfo> getAllVideos() throws ClientException {
        DefaultAcsClient client = init();
        List<String> videoIds = getVideoList(client);
        List<VideoInfo> videoInfoList = new ArrayList<>();
        for (String videoId : videoIds) {
            String playUrl = getPlayUrl(client, videoId);
            VideoInfo videoInfo = new VideoInfo();
            videoInfo.setVideoId(videoId);
            videoInfo.setPlayUrl(playUrl);
            videoInfoList.add(videoInfo);
        }
        return videoInfoList;
    }
    // 删除视频
    public static void deleteVideo(String videoId) throws ClientException {
        DefaultAcsClient client = init();
        deleteVideo(client, videoId);
    }
}

工具类的测试

获取视频

1. 获取单个视频的播放地址和ID:

VideoInfo videoInfo = VodUtil.getVideo("video_id");
System.out.println("VideoId: " + videoInfo.getVideoId());
System.out.println("PlayUrl: " + videoInfo.getPlayUrl());

2. 获取所有视频的播放地址和ID:

List<VideoInfo> videoInfoList = VodUtil.getAllVideos();
for (VideoInfo videoInfo : videoInfoList) {
    System.out.println("VideoId: " + videoInfo.getVideoId());
    System.out.println("PlayUrl: " + videoInfo.getPlayUrl());
}

上传视频

VideoInfo videoInfo = VodUtil.uploadAndPlay("video_title", "video_file_path");
System.out.println("VideoId: " + videoInfo.getVideoId());
System.out.println("PlayUrl: " + videoInfo.getPlayUrl());

删除视频

VodUtil.deleteVideo("video_id");

猜你喜欢

转载自blog.csdn.net/qq_45074341/article/details/129977129