产品百科 |如何进行点播资源迁移

简介: 使用视频点播,部分用户会有大量存量视频在个人网站、云端上,使用阿里云视频点播会有原有视频迁移到 VOD 的需求,此篇文档希望能协助用户完成数据资源迁移到点播。

使用视频点播,部分用户会有大量存量视频在个人网站、云端上,使用阿里云视频点播会有原有视频迁移到 VOD 的需求,此篇文档希望能协助用户完成数据资源迁移到点播。

准备工作

上传 SDK 流程图解

  • 正常迁移image.png
  • 使用阿里云 ECS 迁移image.png

说明 如果用户迁移资源原本在点播或 OSS,源地址使用内网的话,文件可通过内网下载到 ecs,详情请参见:内网迁移资源

详细步骤

  1. 准备资源迁移
    说明 用户需要准备所有迁移文件的下载地址,需要注意下载地址如果存在鉴权,尽量保证鉴权时间够长,避免下载时文件下载地址失效。
    示例:用户可以根据自身的数据处理习惯保存迁移文件下载地址,本次以每行一个文件下载地址文本格式,保存迁移资源,如图所示:image.png
  2. 编写 VOD 上传程序说明迁移程序编写过程中,需要记录视频上传地址与上传至点播后视频 ID 之间的关联,方便迁移后视频的整理归类。此处介绍两种上传方式,可以根据自身情况选择使用,推荐使用第一种上传 SDK 方式。
  1. 使用 VOD 上传 SDK 上传视频 (推荐)迁移流程不变,但是在资源上传时采用视频点播的上传 SDK 进行上传,此种方式为同步上传,更具有时效性,使用上传 SDK 可以将程序优先部署在点播 bucket (国内默认上海) 同地区的 ecs (需用户自行准备 ecs),使用 SDK 接口上传时指定参数 regionId 后,文件上传至点播时会自动走内网。
    上传 SDK
import com.aliyun.vod.upload.impl.UploadVideoImpl;
import com.aliyun.vod.upload.req.UploadStreamRequest;
import com.aliyun.vod.upload.resp.UploadStreamResponse;
import java.io.*;
import java.net.URL;
/**
 * 使用上传SDK进行视频文件上传
 */
public class UploadStreamDemo {
    /**
     * 流式上传接口
     *
     * @param accessKeyId
     * @param accessKeySecret
     * @param title
     * @param fileName
     * @param inputStream
     */
    private static void testUploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) {
        UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);
        /* 自定义消息回调设置,参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */
        //request.setUserData(""{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}"");
        /* 视频分类ID(可选) */
        //request.setCateId(0);
        /* 视频标签,多个用逗号分隔(可选) */
        //request.setTags("标签1,标签2");
        /* 视频描述(可选) */
        //request.setDescription("视频描述");
        /* 封面图片(可选) */
        //request.setCoverURL("http://cover.sample.com/sample.jpg");
        /* 模板组ID(可选) */
        //request.setTemplateGroupId("8c4792cbc8694e****fd5330e56a33d");
        /* 工作流ID(可选) */
        //request.setWorkflowId("d4430d07361f****1339577859b0177b");
        /* 存储区域(可选) */
        //request.setStorageLocation("outin-20170323****266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
        /* 点播服务接入点 */
        request.setApiRegionId("cn-shanghai");
        /* ECS部署区域*/
        // request.setEcsRegionId("cn-shanghai");
        UploadVideoImpl uploader = new UploadVideoImpl();
        UploadStreamResponse response = uploader.uploadStream(request);
        System.out.print("RequestId=" + response.getRequestId() + "\n");  //请求视频点播服务的请求ID
        if (response.isSuccess()) {
            System.out.print("VideoId=" + response.getVideoId() + "\n");
        } 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");
        }
    }
    public static void main(String[] args) {
        /**
         * 用户可自行添加url数据源,并传入视频媒资信息,上传视频资源
         */
        InputStream inputStream = null;
        String url = "http://test.aliyun.com/video/test.mp4";
        try {
            inputStream = new URL(url).openStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        testUploadStream("<Your AccessKeyId>", "<Your AccessKeySecret>", "title", "video-1.mp4", inputStream);
    }
}
  1. 使用 URL 批量拉取上传视频 (不推荐)UploadMediaByURL
    用户可参考下方的批量拉取代码,将迁移资源文件下载地址逐个传入,执行完成上传任务提交,也可以根据个人需求在上传时传入视频的媒资信息,如:标题、分类、描述等,这样总体迁移流程不变,但需要用户根据个人场景设计迁移步骤的具体行为。
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.UploadMediaByURLRequest;
import com.aliyuncs.vod.model.v20170321.UploadMediaByURLResponse;
import java.net.URLEncoder;
/**
 * URL异步批量拉取
 * 使用前建议阅读该接口文档,了解其优势及缺陷
 * https://help.aliyun.com/document_detail/86311.html?spm=a2c4g.11186623.6.714.4d9d3dbdFBPe6k
 */
public class UploadMediaByURLDemo {
    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;
    }
    /**
     * URL批量拉取上传
     * @param client 发送请求客户端
     * @return UploadMediaByURLResponse URL批量拉取上传响应数据
     * @throws Exception
     */
    public static UploadMediaByURLResponse uploadMediaByURL(DefaultAcsClient client,String url) throws Exception{
        UploadMediaByURLRequest request = new UploadMediaByURLRequest();
        //String url = "http://xxxx.mp4";
        String encodeUrl = URLEncoder.encode(url, "UTF-8");
        request.setUploadURLs(encodeUrl);
        //上传视频元数据信息,为JSON字符串
        JSONObject uploadMetadata = new JSONObject();
        uploadMetadata.put("SourceUrl", encodeUrl);
        uploadMetadata.put("Title", "upload by url sample");
        JSONArray uploadMetadataList = new JSONArray();
        uploadMetadataList.add(uploadMetadata);
        request.setUploadMetadatas(uploadMetadataList.toJSONString());
        JSONObject userData = new JSONObject();
    //回调信息设置,点播控制台勾选视频上传能完成事件,视频成功上传后会发送通知消息到该URL
        JSONObject messageCallback = new JSONObject();
        messageCallback.put("CallbackURL", "http://xxxxx");//用户接受回调消息的url
        messageCallback.put("CallbackType", "http");
        userData.put("MessageCallback", messageCallback.toJSONString());
        JSONObject extend = new JSONObject();//此处写入的消息会写入回调消息中,用于数据透传
        extend.put("MyId", "user-defined-id");
        userData.put("Extend", extend.toJSONString());
        request.setUserData(userData.toJSONString());
        return client.getAcsResponse(request);
    }
    // 请求示例
    public static void main(String[] argv) throws ClientException {
        DefaultAcsClient client = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");
        UploadMediaByURLResponse response = new UploadMediaByURLResponse();
        try { 
    //此处用户可修改成读取,事前准备的迁移资源文本
            response = uploadMediaByURL(client,"http://xxxx.mp4");文件中的上传地址进行上传
            System.out.print("UploadJobs = " + JSON.toJSONString(response.getUploadJobs()) + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
        System.out.print("RequestId = " + response.getRequestId() + "\n");
    }
}
  1. 部署程序上传
  1. 根据自身场景编写完上传代码,将程序部署并开始资源上传至 VOD。
  2. 需要整理迁移前后资源关系的用户,上传程序应当记录源文件地址和上传后 VideoId 的关联,如:在上传时打印日志形式记录、上传时源文件地址写入视频媒资信息记录等,具体如何记录看用户个人场景。
    说明 URL 批量拉取,该接口同步返回信息中有对应上传源文件地址,有需求可以合理使用。
  1. 点播资源关系整理顺利完成数据迁移,部分客户会有整理资源的步骤,因为之前在上传时,记录了迁移源文件地址和上传到点播后 VideoId 之间的对应关系,可根据此记录依照个人场景进行关系整理。

阿里云账号之间的点播视频资源迁移

将视频点播 bucket 中的视频迁移到另一个账户中的另一个 bucket 中,部分客户希望在更多地区复制视频点播解决方案,这就需要将现有视频点播存储的内容迁移到不同的帐户,产生了阿里云账号之间的视频资源迁移。

针对这种场景提供的方案是:

  • 调用点播 SearchMedia 接口筛选出要迁移的视频 VideoId。
  • 根据 VideoId 调用点播 GetMezzanineInfo 接口获取所有需要迁移视频的源文件地址并保存。
    说明 如果用户需要使用转码流作为迁移源文件下载地址,可通过点播 媒资导出image.png
  • 自详细步骤第二步 开始进行资源迁移。

内网迁移资源

如果用户的 ecs 与源文件在同一地域的话,这里在调用 GetMezzanineInfo 接口时推荐获取文件 OSS 地址,然后手动将文件下载地址的域名替换为 OSS 内网通过 OSS 内网地址访问 OSS 资源

例:原 OSS 地址: outin-67870fd5b29****98a3900163e1c35d5.oss-cn-shanghai.aliyuncs.com/customerTrans/2a13b91506f9158f****7317f4a9d4c9/30f24681-1718d5c6237-**4bd.mp4

通过 ecs 内网访问地址 ((oss region 后增加 "-internal")): outin-67870fd5b29****98a3900163e1c35d5.oss-cn-shanghai-internal.aliyuncs.com/customerTrans/2a13b91506f9158f****7317f4a9d4c9/30f24681-1718d5c6237-**4bd.mp4

image.png


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。


image.png

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
存储 安全 API
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
279 2
|
3月前
|
数据采集 运维 DataWorks
DataWorks产品使用合集之Serverless资源组与旧版资源组对比有什么区别
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
1月前
|
JSON API 数据格式
阿里云国际版CDN查询实时带宽步骤
阿里云国际版CDN查询实时带宽步骤
|
6月前
|
缓存 安全 API
对象存储OSS产品常见问题之多租户系统用程序统计每个租户的下行流量如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
362 0
|
6月前
|
存储 JavaScript 开发工具
对象存储OSS产品常见问题之音频倍速保存如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。对象存储OSS产品常见问题之
129 0
|
6月前
|
存储 缓存 安全
对象存储OSS产品常见问题之拥有两个相同的标准资源存储包延期抵用如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
|
CDN
点播试看功能最佳实践
## 简介 试看指用户在观看视频或者音频等内容时,只能观看指定时间(如前五分钟)的内容,通常用于会员等付费业务场景。 阿里云视频点播服务提供了试看的完整解决方案,您可自由设置试看时长(或观看完整视频),播放服务会根据设置提供含有试看限制的特定的播放地址,可借此来实现完整的试看功能。 ## 使用前提 试看的基本原理是,播放的CDN加速地址带有试看的指定时长信息,云端会对该信息进行鉴权,鉴
3151 0
|
存储 SQL 监控
更便捷:阿里云DCDN离线日志转存全新升级
1月6日,阿里云CDN年度产品升级发布会中,阿里云CDN产品专家邓建伟宣布DCDN离线日志转存全新升级,并对离线日志转存方案的价值、应用及使用进行了详细解读。
2479 0
更便捷:阿里云DCDN离线日志转存全新升级
|
存储 SQL 监控
更便捷 阿里云DCDN离线日志转存全新升级
近日,阿里云CDN年度产品升级发布会中,阿里云CDN产品专家邓建伟宣布DCDN离线日志转存全新升级,并对离线日志转存方案的价值、应用及使用进行了详细解读。
2349 0
更便捷 阿里云DCDN离线日志转存全新升级
|
移动开发 自然语言处理 运维
使用资源编排ROS一键批量开通阿里云产品
## 背景 如果你使用过阿里云的云产品/服务,你会发现其中有不少需要手动点击“开通”。比如初次使用 SLS 日志服务时,就会进入下面的界面: ![sls-enable-service.jpg](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/561d3fc5d9805e79a62a41a9094019c3.jpg) 作为个人用户,以手
1738 0
使用资源编排ROS一键批量开通阿里云产品