创建视频V2 通过本接口可在点播模式下创建一个视频条目。 接口功能介绍 注意 本接口适用于2026年3月13日之后开通的新增客户。在此之前开通的存量客户,如已使用旧版API或者旧版SDK开发业务的,可继续沿用旧接口和SDK,也可视自身情况迁移至新接口。 通过本接口可在点播模式下创建一个视频条目。 上传原理概述 视频文件的创建、存储需要分3步来进行。 步骤1:初始化上传,在此步骤需要将所有的业务管理信息发送到云点播服务中创建视频文件接口,接口成功之后会返回分片上传的地址列表,如后文的响应示例所示。 调用了该接口但未调用完成上传视频接口,系统会在数据库中存入这些业务信息(以及一些中间信息,例如uploadId),但由于这条视频信息还处于 UPLOADING的状态,除了删除视频外的其他接口,均不会对这些视频造成影响。例如在提交任务接口中,甚至会返回找不到该视频的错误。 步骤2: 将视频文件片上传到步骤1返回的URL列表中。 将完整的视频按照步骤1约定的大小进行切片,然后将片段按照顺序使用 data.uploadUrls 中返回的预签名 URL 通过PUT方法上传到服务器。JAVA版原理示例如下,用户可结合自己的开发语言自行实现。signature签名已在步骤1中提供,如果过期可以参考签名应用及示例中SHELL示例重签。 java File localVideoFile new File("fullFilePath"); // 从第一步初始化分片获取各个分片上传预签名链接 // 例如 List partPresignedUrlList; // 分片大小示例为5M int partSize 5 1024 1024; // 存放每个分片上传成功后的etag List partEtags new LinkedList<>(); // 从第一片开始 int partNumber 1; // 实例化一个OkHttpClient OkHttpClient okHttpClient buildOkHttpClient(); // 依次读取、上传各个分片字节流 try (FileInputStream fin new FileInputStream(localVideoFile); FileChannel channel fin.getChannel()) { ByteBuffer buffer ByteBuffer.allocate(partSize); byte[] partContent new byte[partSize]; int partLength 0; while ((partLength (channel.read(buffer))) ! 1) { String partPresignedUrl partPresignedUrlList.get(partNumber 1); // 读取第partNumber片字节流 ((Buffer) buffer).flip(); buffer.get(partContent, 0, partLength); // 上传第partNumber片字节流 RequestBody body RequestBody.create(partContent, null, 0, partLength); Request req new Request.Builder().url(partPresignedUrl).put(body).build(); int uploadRetryCount 0; while (uploadRetryCount < 3) { try (Response response okHttpClient.newCall(req).execute()) { if (response.isSuccessful()) { log.info("Put part to [{}] successfully!", partPresignedUrl); partEtags.add(response.header("etag")); break; } log.error("put part to [{}] failed,failed code is {}, error:{}", partPresignedUrl, response.code(), response.body().string()); uploadRetryCount++; log.info("Retry to put part to [{}] again!", partPresignedUrl); } catch (Exception ex) { log.error("put part to [{}] failed:", partPresignedUrl, ex); uploadRetryCount++; log.info("Retry to put part to [{}] again!", partPresignedUrl); } } // 清空缓存区 ((Buffer) buffer).clear(); } } 步骤3:调用云点播服务完成上传视频接口完成本次上传。步骤2每次上传成功之后,需要记录请求 Response 中的 eTag 头部信息,在步骤3完成上传视频的接口参数中传入该参数。