微短剧媒体上传

微短剧解决方案提供SDK或API的媒体上传方式。通过阅读本文,您可以了解微短剧媒体上传的基本操作步骤。

说明

使用微短剧媒体上传前,请确保您已基本了解什么是媒体上传。详情媒体上传概述

媒体上传基础流程

  1. 在视频点播服务内获取上传凭证和上传地址。

  2. 调用OSS上传能力上传媒体。

上传SDK(推荐使用)

上传SDK封装了获取上传凭证及地址的逻辑和OSS上传的逻辑。开发者仅需要简单配置就可以实现上传功能,推荐使用

调用相应接口完成上传,示例Demo如下:

public class Sample {
    // 账号AK信息请填写(必选)
    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取AccessKey,来实现API访问的身份验证。运行代码示例前,请配置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");

    public static void main(String[] args) {
        // 视频文件上传
        // 视频标题(必选)
        String title = "测试标题";
        // 1.本地文件上传和文件流上传时,文件名称为上传文件绝对路径,如:/User/sample/文件名称.mp4 (必选)
        // 2.网络流上传时,文件名称为源文件名,如文件名称.mp4(必选)。
        // 3.流式上传时,文件名称为源文件名,如文件名称.mp4(必选)。
        // 任何上传方式文件名必须包含扩展名
        String fileName = "/Users/test/video/test.mp4";
        // 本地文件上传
        testUploadVideo(accessKeyId, accessKeySecret, title, fileName);

        // 待上传视频的网络流地址
        String url = "http://test.aliyun.com/video/test.mp4";

        // 2.网络流上传
        // 文件扩展名,当url中不包含扩展名时,需要设置该参数
        String fileExtension = "mp4";
        testUploadURLStream(accessKeyId, accessKeySecret, title, url, fileExtension);

        // 3.文件流上传
        testUploadFileStream(accessKeyId, accessKeySecret, title, fileName);

        // 4.流式上传,如文件流和网络流
        InputStream inputStream = null;
        // 4.1 文件流
        try {
            inputStream = new FileInputStream(fileName);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        // 4.2 网络流
        try {
            inputStream = new URL(url).openStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        testUploadStream(accessKeyId, accessKeySecret, title, fileName, inputStream);
    }

    /**
 * 本地文件上传接口
 *
 * @param accessKeyId
 * @param accessKeySecret
 * @param title
 * @param fileName
 */
    private static void testUploadVideo(String accessKeyId, String accessKeySecret, String title, String fileName) {
        UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
        /* 可指定分片上传时每个分片的大小,默认为2M字节 */
        request.setPartSize(2 * 1024 * 1024L);
        /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/
        request.setTaskNum(1);
        /* 是否开启断点续传, 默认断点续传功能关闭。当网络不稳定或者程序崩溃时,再次发起相同上传请求,可以继续未完成的上传任务,适用于超时3000秒仍不能上传完成的大文件。
    注意:断点续传开启后,会在上传过程中将上传位置写入本地磁盘文件,影响文件上传速度,请您根据实际情况选择是否开启*/
        //request.setEnableCheckpoint(false);
        /* OSS慢请求日志打印超时时间,是指每个分片上传时间超过该阈值时会打印debug日志,如果想屏蔽此日志,请调整该阈值。单位:毫秒,默认为300000毫秒*/
        //request.setSlowRequestsThreshold(300000L);
        /* 可指定每个分片慢请求时打印日志的时间阈值,默认为300s*/
        //request.setSlowRequestsThreshold(300000L);
        /* 是否显示水印(可选),指定模板组ID时,根据模板组配置确定是否显示水印*/
        //request.setIsShowWaterMark(true);
        /* 自定义消息回调设置及上传加速设置(可选), Extend为自定义扩展设置,MessageCallback为消息回调设置,AccelerateConfig为上传加速设置(上传加速功能需要先申请开通后才能使用)*/
        //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
    /* 视频分类ID(可选) */
    //request.setCateId(0);
    /* 视频标签,多个用逗号分隔(可选) */
    //request.setTags("标签1,标签2");
    /* 视频描述(可选)*/
    //request.setDescription("视频描述");
    /* 封面图片(可选)*/
    //request.setCoverURL("http://cover.example.com/image_01.jpg");
    /* 模板组ID(可选)*/
    //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e5****");
    /* 工作流ID(可选)*/
    //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
    /* 存储区域(可选)*/
    //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
    /* 开启默认上传进度回调 */
    //request.setPrintProgress(false);
    /* 设置自定义上传进度回调(必须继承 VoDProgressListener)*/
    /*默认关闭。如果开启了这个功能,上传过程中服务端会在日志中返回上传详情。如果不需要接收此消息,需关闭此功能*/
    //request.setProgressListener(new PutObjectProgressListener());
    /* 设置您实现的生成STS信息的接口实现类*/
    // request.setVoDRefreshSTSTokenListener(new RefreshSTSTokenImpl());
    /* 设置应用ID*/
    //request.setAppId("app-100****");
    /* 点播服务接入点 */
    //request.setApiRegionId("cn-shanghai");
    /* ECS部署区域*/
    // request.setEcsRegionId("cn-shanghai");

    /* 配置代理访问(可选) */
    //OSSConfig ossConfig = new OSSConfig();
    /* <必填>设置代理服务器主机地址 */
    //ossConfig.setProxyHost("<yourProxyHost>");
    /* <必填>设置代理服务器端口 */
    //ossConfig.setProxyPort(-1);
    /* 设置连接OSS所使用的协议(HTTP或HTTPS),默认为HTTP */
    //ossConfig.setProtocol("HTTP");
    /* 设置用户代理,指HTTP的User-Agent头,默认为aliyun-sdk-java */
    //ossConfig.setUserAgent("<yourUserAgent>");
    /* 设置代理服务器验证的用户名,https协议时需要填 */
    //ossConfig.setProxyUsername("<yourProxyUserName>");
    /* 设置代理服务器验证的密码,https协议时需要填 */
    //ossConfig.setProxyPassword("<yourProxyPassword>");
    //request.setOssConfig(ossConfig);

    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadVideoResponse response = uploader.uploadVideo(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");
    }
    }

    /**
    * URL网络流上传。支持断点续传,最大支持48.8TB的单个文件。
    * 该上传方式需要先将网络文件下载到本地磁盘,再进行上传,所以要保证本地磁盘有充足的空间。
    * 当您设置的URL中不包括文件扩展名时,需要单独设置fileExtension,表示文件扩展名。
    * @param accessKeyId
    * @param accessKeySecret
    * @param title
    * @param fileExtension
    * @param url
    */
    private static void testUploadURLStream(String accessKeyId, String accessKeySecret, String title, String url, String fileExtension) {
    UploadURLStreamRequest request = new UploadURLStreamRequest(accessKeyId, accessKeySecret, title, url);

    /* 文件扩展名*/
    request.setFileExtension(fileExtension);
    /* 网络文件下载连接超时,单位毫秒,0-表示不限制*/
    request.setDownloadConnectTimeout(1000);
    /* 网络文件下载读取超时,单位毫秒,0-表示不限制*/
    request.setDownloadReadTimeout(0);
    /* 网络文件下载后保存的本地目录*/
    request.setLocalDownloadFilePath("/Users/download");
    /* 是否显示水印(可选),指定模板组ID时,根据模板组配置确定是否显示水印*/
    //request.setShowWaterMark(true);
    /* 自定义消息回调设置及上传加速设置(可选),Extend为自定义扩展设置,MessageCallback为消息回调设置,AccelerateConfig为上传加速设置(上传加速功能需要先申请开通后才能使用) */
    //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
    /* 视频分类ID(可选) */
    //request.setCateId(0);
    /* 视频标签,多个用逗号分隔(可选) */
    //request.setTags("标签1,标签2");
    /* 视频描述(可选) */
    //request.setDescription("视频描述");
    /* 封面图片(可选)*/
    //request.setCoverURL("http://cover.example.com/image_01.jpg");
    /* 模板组ID(可选)*/
    //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
    /* 工作流ID(可选)*/
    //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
    /* 存储区域(可选)*/
    //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
    /* 开启默认上传进度回调 */
    //request.setPrintProgress(true);
    /* 设置自定义上传进度回调 (必须继承 VoDProgressListener)*/
    /*默认关闭。如果开启了这个功能,上传过程中服务端会在日志中返回上传详情。如果不需要接收此消息,需关闭此功能*/
    //request.setProgressListener(new PutObjectProgressListener());
    /* 设置应用ID*/
    //request.setAppId("app-100****");
    /* 点播服务接入点 */
    //request.setApiRegionId("cn-shanghai");
    /* ECS部署区域*/
    // request.setEcsRegionId("cn-shanghai");

    /* 配置代理访问(可选) */
    //OSSConfig ossConfig = new OSSConfig();
    /* <必填>设置代理服务器主机地址 */
    //ossConfig.setProxyHost("<yourProxyHost>");
    /* <必填>设置代理服务器端口 */
    //ossConfig.setProxyPort(-1);
    /* 设置连接OSS所使用的协议(HTTP或HTTPS),默认为HTTP */
    //ossConfig.setProtocol("HTTP");
    /* 设置用户代理,指HTTP的User-Agent头,默认为aliyun-sdk-java */
    //ossConfig.setUserAgent("<yourUserAgent>");
    /* 设置代理服务器验证的用户名,https协议时需要填 */
    //ossConfig.setProxyUsername("<yourProxyUserName>");
    /* 设置代理服务器验证的密码,https协议时需要填 */
    //ossConfig.setProxyPassword("<yourProxyPassword>");
    //request.setOssConfig(ossConfig);

    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadURLStreamResponse response = uploader.uploadURLStream(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");
    }
    }

    /**
    * 文件流上传接口
    *
    * @param accessKeyId
    * @param accessKeySecret
    * @param title
    * @param fileName
    */
    private static void testUploadFileStream(String accessKeyId, String accessKeySecret, String title, String fileName) {
    UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName);
    /* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*/
    //request.setShowWaterMark(true);
    /* 自定义消息回调设置及上传加速设置(可选),Extend为自定义扩展设置,MessageCallback为消息回调设置,AccelerateConfig为上传加速设置(上传加速功能需要先申请开通后才能使用)*/
    //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
    /* 视频分类ID(可选)*/
    //request.setCateId(0);
    /* 视频标签,多个用逗号分隔(可选) */
    //request.setTags("标签1,标签2");
    /* 视频描述(可选)*/
    //request.setDescription("视频描述");
    /* 封面图片(可选)*/
    //request.setCoverURL("http://cover.example.com/image_01.jpg");
    /* 模板组ID(可选)*/
    //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
    /* 工作流ID(可选)*/
    //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
    /* 存储区域(可选)*/
    //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
    /* 开启默认上传进度回调 */
    //request.setPrintProgress(true);
    /* 设置自定义上传进度回调(必须继承 VoDProgressListener)*/
    /*默认关闭。如果开启了这个功能,上传过程中服务端会在日志中返回上传详情。如果不需要接收此消息,需关闭此功能*/
    //request.setProgressListener(new PutObjectProgressListener());
    /* 设置应用ID*/
    //request.setAppId("app-100****");
    /* 点播服务接入点 */
    //request.setApiRegionId("cn-shanghai");
    /* ECS部署区域*/
    // request.setEcsRegionId("cn-shanghai");

    /* 配置代理访问(可选) */
    //OSSConfig ossConfig = new OSSConfig();
    /* <必填>设置代理服务器主机地址 */
    //ossConfig.setProxyHost("<yourProxyHost>");
    /* <必填>设置代理服务器端口 */
    //ossConfig.setProxyPort(-1);
    /* 设置连接OSS所使用的协议(HTTP或HTTPS),默认为HTTP */
    //ossConfig.setProtocol("HTTP");
    /* 设置用户代理,指HTTP的User-Agent头,默认为aliyun-sdk-java */
    //ossConfig.setUserAgent("<yourUserAgent>");
    /* 设置代理服务器验证的用户名,https协议时需要填 */
    //ossConfig.setProxyUsername("<yourProxyUserName>");
    /* 设置代理服务器验证的密码,https协议时需要填 */
    //ossConfig.setProxyPassword("<yourProxyPassword>");
    //request.setOssConfig(ossConfig);

    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadFileStreamResponse response = uploader.uploadFileStream(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");
    }
    }

    /**
    * 流式上传接口
    *
    * @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);
    /* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*/
    //request.setShowWaterMark(true);
    /* 自定义消息回调设置及上传加速设置(可选), Extend为自定义扩展设置,MessageCallback为消息回调设置,AccelerateConfig为上传加速设置(上传加速功能需要先申请开通后才能使用)*/
    //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
    /* 视频分类ID(可选) */
    //request.setCateId(0);
    /* 视频标签,多个用逗号分隔(可选) */
    //request.setTags("标签1,标签2");
    /* 视频描述(可选)*/
    //request.setDescription("视频描述");
    /* 封面图片(可选)*/
    //request.setCoverURL("http://cover.example.com/image_01.jpg");
    /* 模板组ID(可选)*/
    //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
    /* 工作流ID(可选)*/
    //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
    /* 存储区域(可选)*/
    //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
    /* 开启默认上传进度回调 */
    // request.setPrintProgress(true);
    /* 设置自定义上传进度回调(必须继承 VoDProgressListener) */
    /*默认关闭。如果开启了这个功能,上传过程中服务端会在日志中返回上传详情。如果不需要接收此消息,需关闭此功能*/
    // request.setProgressListener(new PutObjectProgressListener());
    /* 设置应用ID*/
    //request.setAppId("app-100****");
    /* 点播服务接入点 */
    //request.setApiRegionId("cn-shanghai");
    /* ECS部署区域*/
    // request.setEcsRegionId("cn-shanghai");

    /* 配置代理访问(可选) */
    //OSSConfig ossConfig = new OSSConfig();
    /* <必填>设置代理服务器主机地址 */
    //ossConfig.setProxyHost("<yourProxyHost>");
    /* <必填>设置代理服务器端口 */
    //ossConfig.setProxyPort(-1);
    /* 设置连接OSS所使用的协议(HTTP或HTTPS),默认为HTTP */
    //ossConfig.setProtocol("HTTP");
    /* 设置用户代理,指HTTP的User-Agent头,默认为aliyun-sdk-java */
    //ossConfig.setUserAgent("<yourUserAgent>");
    /* 设置代理服务器验证的用户名,https协议时需要填 */
    //ossConfig.setProxyUsername("<yourProxyUserName>");
    /* 设置代理服务器验证的密码,https协议时需要填 */
    //ossConfig.setProxyPassword("<yourProxyPassword>");
    //request.setOssConfig(ossConfig);

    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");
    }
    }
    }

URL批量拉取上传

通过UploadMediaByURL接口,将媒体文件通过公网访问的URL地址拉取并上传到视频点播的存储地址。

示例Demo如下:

import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用AK&amp;SK初始化账号Client</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.vod20170321.Client createClient() throws Exception {
        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html。
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
        // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
        .setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
        // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        .setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        // Endpoint 请参考 https://api.aliyun.com/product/vod
        config.endpoint = "vod.cn-shanghai.aliyuncs.com";
        return new com.aliyun.vod20170321.Client(config);
    }

    public static void main(String[] args_) throws Exception {
        java.util.List<String> args = java.util.Arrays.asList(args_);
        com.aliyun.vod20170321.Client client = Sample.createClient();
        com.aliyun.vod20170321.models.UploadMediaByURLRequest uploadMediaByURLRequest = new com.aliyun.vod20170321.models.UploadMediaByURLRequest();
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            client.uploadMediaByURLWithOptions(uploadMediaByURLRequest, runtime);
        } catch (TeaException error) {
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            // 错误 message
            System.out.println(error.getMessage());
            // 诊断地址
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }        
    }
}

基于OSS原生SDK

上传SDK无法满足业务需求(如开发语言不匹配)时,开发者可以结合点播服务端SDK(获取上传凭证及地址)和OSS原生SDK(Base64解码获取到的上传凭证及地址,然后调用OSS接口)完成上传。

基于OSS服务端API(不推荐)

开发者也可以直接调用点播服务端接口获取上传地址和凭证,再调用OSS原生API完成上传。考虑到上传效率和出错概率等因素,一般不推荐这种方式。

常见问题

  1. 为什么上传文件一致处于上传中?

    请排查是否由以下原因造成:

    • 原因一:URL批量拉取上传为异步上传,不保证时效性

    如果您是通过UploadMediaByURL - URL批量拉取上传接口上传,URL批量拉取上传是异步任务,非实时,不保证时效性,一般提交后会在数小时甚至数天内完成迁移上传。

    • 原因二:只生成了上传凭证,但没有上传文件

    如果您是通过调用CreateUploadVideo - 获取音视频上传地址和凭证接口上传,此接口仅用于获取上传凭证和创建媒资基础信息,并非上传文件,后续您还需要调用OSS能力完成上传,完整的上传步骤,请参见通过视频点播API上传媒体文件

    • 原因三:上传文件过大导致上传时间较长

    请确认上传文件大小以及处于“上传中”状态的时间是否处于合理范围。通过控制台、上传SDK和客户端上传工具等方式上传文件时,默认会使用分片上传,最大支持上传48.8 TB的单个文件;上传SDK同时也提供简单上传功能,其最大支持上传5 GB的单个文件。

    • 原因四:网络问题

    请确认您的网络带宽是否符合预期。

  2. 使用IOS上传SDK上传失败并报错Error Domain=NSCocoaErrorDomain

    上传失败并报错(错误码207,错误信息Error Domain=NSCocoaErrorDomain),通常是由于读取文件错误,没有权限导致。您可以通过以下方式解决:

    • 方式一:授予iOS上传SDK读取本地资源的权限。

    • 方式二:将本地资源存放到沙盒路径下,再上传。

  3. 使用URL批量拉取上传时提示“The service is not open in current region”的错误

    提示The service is not open in current region表示当前服务地域暂不支持使用URL批量拉取上传方式进行上传,URL批量拉取上传目前仅支持在华东2(上海)新加坡地域使用。

    如果您非上述地域,建议您将音视频文件下载到本地,然后再通过上传SDK进行上传,详情请参见上传SDK概述

  4. 微信中使用JS SDK上传存在兼容性问题,无法正常上传

    经过排查由于微信浏览器对于H5存在兼容性问题,需要将<input type="file" name="file" id="files" multiple="">中的 multiple=""参数去掉就可以正常上传。

  5. 推流SDK特定分辨率时出现预览页面拉伸现象

    推流SDK在选择推流分辨率为480p时预览页面出现拉伸的现象,但是实际推流是正常的。主要因为480p对应的分辨率为480×640,由于大多数手机屏幕均不支持该分辨率的比例导致出现拉伸的现象。

    解决办法:修改预览页面surfaceview的比例,请将activity_push.xml内容修改如下即可。

    imageimage

  6. Android Studio如何查看和导入aar包数据

    查看aar包数据:将.aar文件后缀改成.zip并解压,查看.class.xml.jar、图片、文本等各种内容。导入aar包数据:

    1. 拷贝.aar文件到工程项目下,路径一般为projectName/libs/,重新载入工程。image

    2. 在build.gradle根标签下添加本地仓库路径,并在dependencies中添加编译依赖。其中libs目录按照实际工程下的包引入文件夹名称而定。在compile参数中,name的值为aar文件的名字,ext为文件的扩展名。image

    3. 选择 build > rebuild,重新构建project。构建完成之后,在工程的External Libraries中即可看到引入的aar包。image