音视频点播VOD

    快速开始

    1. 获取临时授权访问资质。

      由于上传的视频需要保存至百度智能云对象存储(BOS)中,而 BOS 需要通过 STS(Security Token Service)机制实现第三方的临时授权访问。授权过程参见 STS临时授权访问

      用户从用户自己搭建的服务端获取到临时访问授权后,可以通过下列方法构造临时授权类:

      String tempAk = "d0f8d0660ddd11e79872ab516edc6a21";
      String tempSk = "4cb1cef66c5b4cff8b054813aadcef26";
      String sessionToken = "MjUzZjQzNTY4OTE0NDRkNjg3N2E4YzJhZTc4YmU5ZDh8AAAAADgBAABWdIGtrK1YlGvOCiF/C4ufC3d0Z3JohK21wiXtoEaEOK4a2pk12xHGOpZkp7VIW3SdFI2ordNzDiK+As87R4kQboD2jdfUXbhUkrQ787QCfOUhdbXmR2qB3pYEsmI+++VlhrfFaKEXlDDcUCSTMZR0v0jn+Ko0uZRpqMhrPSPRtybh9SYqAVibmuBHSZyAa1qMCe9fBKEgfYb+7O+bGt2Y84kIvSEgHpBy8PdiaHEB3LBgO4Wml4UHpOR7EF/zS9cEmpSZlgfL3dbIhAZMtsTG";
      DefaultBceSessionCredentials stsCredentials =
          new DefaultBceSessionCredentials(
                              tempAk,
                              tempSk,
                              sessionToken);

      注意: 示例中的 tempAk、tempSk 和 sessionToken 仅用于示例,实际使用时请从服务端获取临时授权认证,参考BOS

    2. 构建 VOD 和 BOS 的客户端代理。

      BceClientConfiguration vodConfig = new BceClientConfiguration();
      vodConfig.withCredentials(stsCredentials);
      
      BosClientConfiguration bosConfig = new BosClientConfiguration();
      bosConfig.setMaxConnections(15); // 替换设置最大连接数接口,设置全局最大并发任务数,默认为6
      bosConfig.withCredentials(stsCredentials);
      
      vodClient = new VodClient(vodConfig);
      bosClient = new BosClient(bosConfig);

      除了最大连接数之外,您还可以通过 BceClientConfiguration 设置其他接口,比如连接的超时时间等。

    3. 选择上传文件

      通过自定义的文件选取 Activity 或使用 Intent 的方式获取到所要上传文件的路径后,就可以开始上传了。在 demo 中,使用了 VodLocalFilesExplorerActivity 这个 Activity 完成了文件的选取。

    4. 上传媒资

      选取到所要上传的文件的路径后,通过下列三个小步骤完成上传:

      • 申请媒资

        可以通过 VodClient 的 applyMedia 这个方法申请媒资

          GenerateMediaIdResponse generateMediaIdresponse = vodClient.applyMedia();
          String bosKey = generateMediaIdresponse.getSourceKey();
          String mediaId = generateMediaIdresponse.getMediaId();
          uploadedMediaId = mediaId;
          String bucket = generateMediaIdresponse.getSourceBucket();

        其中:bosKey 和 bucket 是上传时需要用到的变量, mediaId 是处理媒资时需要用到的变量。

      • BOS上传

        举例,示例采用 FileUploadSession 来进行文件的上传,上传的方法是

        	`upload(File file, String bucket, String bosKey)`

        注意:

        FileUploadSession 类的构造方法需要传入一个 BosClient 类的实例,该类实现了文件的分段上传。关于 BosClient 的配置,参考配置说明

        1. 分多少段:ceil(file.length() / CHUNK_SIZE)
        2. 多线程上传:线程数为CPU核数
        3. 对该类稍加修改,可以支持上传进度:每上传完成一个Part,计算下进度,返回给界面类即可。
        4. 分块上传的相关接口参见BOS Object的分块上传
        5. 大块数据上传是特别耗内存的操作,个别低版本机器OOM的话,建议开启application标签下的android:largeHeap="true"。
      • 处理媒资

        媒资上传完成后,用户可以指定如何处理媒资,处理媒资的代码如下:

          String title = "测试";
          String description = "这是一条测试视频";
          String transcodingPresetGroupName = "trans_to_640_360_hls"; // 模板名必须为VOD后台的模板组名称
          // transcodingPresetGroupName 传入null,表示默认模板组。
          ProcessMediaRequest request = new ProcessMediaRequest()
                                              .withMediaId(mediaId)
                                              .withTitle(title)
                                              .withDescription(description)
                                              .withSourceExtension(sourceExtension)
                                              .withTranscodingPresetGroupName(transcodingPresetGroupName);
          // process: let vod to process bos file
          ProcessMediaResponse processResponse = vodClient.processMedia(request);
          uploadedMediaId = processResponse.getMediaId();

        其中,mediaId 是媒资上传完成后获得的媒资 id ,保存该 id,便于后续转码处理等操作。

    上一篇
    SDK-集成
    下一篇
    接口查询