全部产品
云市场

视频上传

更新时间:2019-04-09 15:23:32

简介

阿里云点播上传SDK(ApsaraVideo for Upload SDK)是阿里视频云端到云到端服务的重要一环。集成点播上传SDK,可以上传包括图片、视频、音频等在内各种数据文件,同时提供Web端(JavaScript)、移动端(Android,iOS)、服务端(JAVA)等多种版本SDK,上传文件也可以调用上传OpenAPI和通过阿里云控制台直接上传。

快速接入上传

1. 复制文件

复制AlivcLittleVideo模块下com.aliyun.apsara.alivclittlevideo.view.publish包中的代码和相关资源文件。上传复制文件

2. 使用功能

  • 调用addView方法,把AlivcVideoPublishView实例化对象添加到页面中。

    1. //创建上传view对象
    2. mAlivcVideoPublishView = new AlivcVideoPublishView(this);
    3. //设置上传凭证过期监听
    4. mAlivcVideoPublishView.setOnAuthInfoExpiredListener(new OnAuthInfoExpiredListener() {
    5. @Override
    6. public void onImageAuthInfoExpired() {
    7. //TODO 重新获取图片上传凭证信息
    8. //......
    9. //刷新图片上传凭证信息
    10. mAlivcVideoPublishView.refreshImageUploadAuthInfo(data.getImageId(),
    11. data.getImageURL(),
    12. data.getUploadAddress(),
    13. data.getUploadAuth());
    14. }
    15. @Override
    16. public void onVideoAuthInfoExpired(String videoId) {
    17. //TODO 刷新视频上传凭证
    18. //......
    19. //刷新视频上传凭证信息
    20. mAlivcVideoPublishView.refreshVideoAuth(data.getUploadAddress(),
    21. data.getUploadAuth());
    22. }
    23. });
    24. //设置上传结果回调监听
    25. mAlivcVideoPublishView.setOnUploadCompleteListener(new MyUploadCompleteListener(this));
    26. FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
    27. FrameLayout.LayoutParams.MATCH_PARENT,
    28. FrameLayout.LayoutParams.MATCH_PARENT);
    29. mContentView.addView(mAlivcVideoPublishView, params);
  • 调用AlivcVideoPublishView的startUpload方法开始对视频进行合成、上传。

    1. mAlivcVideoPublishView.startUpload(
    2. //编辑配置信息相关的json文件路径
    3. mConfigPath,
    4. //视频合成路径
    5. mComposeOutputPath,
    6. //视频id
    7. mVideoUploadAuthInfo.getVideoId(),
    8. //视频上传地址
    9. mVideoUploadAuthInfo.getUploadAddress(),
    10. //视频上传凭证
    11. mVideoUploadAuthInfo.getUploadAuth(),
    12. //视频描述
    13. mVideoDesc,
    14. //封面图片地址
    15. mThumbnailPath,
    16. //图片id
    17. mImageUploadAuthInfo.getImageId(),
    18. //图片访问地址
    19. mImageUploadAuthInfo.getImageURL(),
    20. //图片上传地址
    21. mImageUploadAuthInfo.getUploadAddress(),
    22. //图片上传凭证
    23. mImageUploadAuthInfo.getUploadAuth());

视频上传方案说明

短视频合成上传的整体流程为:完成视频编辑,需要对编辑的效果进行合成,生成一个全新的视频,再把生成的视频上传到阿里云点播服务。由于视频合成、视频上传的过程比较消耗时间,所以很多用户希望在这个过程中不影响app其他功能的正常使用。本方案主要针对这个问题作出解决。

视频合成

合成方式分为两种,当前页面合成(前台页面)和其他页面合成(后台合成,这里后台并不是真正的app退到后台)。

  • 前台合成:利用编辑的核心类AliyunIEditor,在编辑完成之后直接调用其compose方法对编辑的视频进行合成,这会造成完成视频合成之后才能显示其他页面。

  • 后台合成:利用SDK提供的合成核心类AliyunICompose,通过传入接收到的配置文件路径,调用其compose方法对编辑的视频进行合成。可以在其他页面完成合成操作。

本解决方案中就是利用后台合成的方式,实现在合成的过程中不阻塞用户的其他操作。其实现步骤为:

  1. 设置编辑后跳转的页面

    编辑模块提供了注册Acitivity的功能,通过注册的Activity替换完成编辑之后默认跳转的发布界面。示例代码如下:

    1. // 注册编辑完成之后跳转的页面
    2. AliyunSvideoActionConfig.getInstance().registerPublishActivity(PublishActivity.class.getName());

    注册Activity的代码必须在进入编辑之前调用。

  2. 接收参数

    在用户自己的发布界面中接收合成所需要的参数。

    1. //接收编辑配置信息相关的json文件路径
    2. mConfigPath = intent.getStringExtra("project_json_path");
    3. //接收选择封面的路径
    4. mThumbnailPath = intent.getStringExtra("svideo_thumbnail");

    只能在注册的Activity中接收参数。

  3. 开始合成

    利用SDK提供的合成核心类AliyunICompose,通过传入接收到的配置文件路径,调用其compose方法对编辑的视频进行合成。

    1. //创建AliyunICompose对象
    2. AliyunIVodCompose mCompose = AliyunComposeFactory.createAliyunVodCompose();
    3. mCompose.init(context);
    4. //开始合成
    5. mCompose.compose(
    6. //配置文件路径
    7. mConfigPath,
    8. //合成视频输出路径
    9. DefaultSvideoParam.DIR_COMPOSE+"/output_compose_video.mp4",
    10. //合成回调监听
    11. new AliyunIComposeCallBack() {
    12. @Override
    13. public void onComposeError(int i) {
    14. //TODO: 合成出错
    15. }
    16. @Override
    17. public void onComposeProgress(int i) {
    18. //TODO: 合成进度
    19. }
    20. @Override
    21. public void onComposeCompleted() {
    22. //TODO: 合成完成
    23. }
    24. });

视频上传

客户端提供了两种授权方式上传到点播:

本解决方案中是通过上传地址和凭证上传的方式,实现视频上传的功能。其具体实现为:利用SDK提供的合成核心类AliyunIVodCompose,通过传入视频信息、视频图片的上传地址和凭证、封面路径等参数,调用uploadImageWithVod方法实现封面上传,调用uploadVideoWithVod方法实现视频上传。

  1. //上传封面
  2. mCompose.uploadImageWithVod(
  3. //封面本地路径
  4. mThumbnailPath,
  5. //封面上传地址
  6. mImageAddress ,
  7. //上传凭证
  8. mImageAuth,
  9. //进度回调
  10. aliyunIVodUploadCallBack );
  1. //上传视频
  2. mCompose.uploadVideoWithVod(
  3. //视频本地地址
  4. mOutputFilePath,
  5. //视频上传地址
  6. mVideoAddress,
  7. //上传凭证
  8. mVideoAuth ,
  9. //进度回调
  10. aliyunIVodUploadCallBack);