Java SDK

1. 简介

  • OBS Java SDK 适用于 JDK6 及以上版本;
  • 本文档主要介绍 OBS Java SDK 的接口使用及注意事项;
  • 并且假设您是平安云用户,且已经开通了OBS服务;
  • 如果您还没有开通或者还不了解平安云 OBS 服务,请登录OBS产品主页 进行了解。

2. SDK下载

Java SDK 开发包最新版本 v3.9.0.1

3. API概览

API

描述

getFromConfigFile

初始化服务

getFromConfigObject

初始化服务

putObject

以 File 对象上传对象存储,若对象存在则更新。

batchPutObject

同时上传多个 File 对象到 OBS。

putObjectMultipart

对于大文件上传,可以切分成片上传。在以下情况下,应该考虑使用分片上传:

  • 文件大于 100M
  • 网络环境差,上传易导致失败
  • 需要支持断点续传

abortMultipartUpload

分片上传的接口中,当参数 MutilpartUploadFileRequest 的 enableCheckpoint 被设置成 true 时(默认为true),断点续传功能被开启。断点续传允许重试失败的分片,而不需重传已经成功的分片。分片上传会在客户端的文件系统中创建一个分片记录(.ucp)文件。开启断点续传功能后,上传会读取该文件中的记录,而只传还未完成的分片;若此记录文件不存在,则会创建该记录文件,并从头开始上传文件。 由于分片上传的每个片会驻留在 OBS 中,直到所有分片上传完成且执行 complete 操作。未执行 complete 操作的上传,其相关的分片将占用存储资源。用户需要调用取消分片上传的接口来删除这些分片。

putAndCompressObject

将File对象进行压缩上传到对象存储,若对象存在则更新。

getObject

下载指定对象,此方法将占用一个Http连接,在Content读取完毕或显示关闭时释放连接。若仅为了获得对象的描述信息而非内容,请使用headObject接口。

getSignedUrl

获取对象的已签名的下载 URL。

getImageViewUrl

获取图片处理下载链接。

batchGetObject

根据多个文件的 objectKey 同时下载多个文件。

getAndUncompressObject

解压指定objectKey对象,然后进行下载。

listObjects

查询bucket下的对象列表。

headObject

获得对象描述信息以及自定义元数据。

deleteObject

删除指定对象。

encryptFile

客户端加密是指用户数据在发送给远端服务器之前,通过SDK完成加密,而加密所用的密钥由用户方自己保存,从而可以保证用户数据安全和密钥唯一性,即使数据泄漏别人也无法解密得到原始数据。

encryptInputStream

客户端加密是指用户数据在发送给远端服务器之前,通过SDK完成加密,而加密所用的密钥由用户方自己保存,从而可以保证用户数据安全和密钥唯一性,即使数据泄漏别人也无法解密得到原始数据。

decryptFile

客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。

decryptInputStream

客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。

getImageView

格式转换,获取适配图片,支持格式 jpeg,tiff, gif, bmp, png ,其中 gif 格式只会保留第一帧图片,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。参数 width 和 height 至少需传入一个,不能同时为 0。

getThumbnail

根据自定义规则获取缩略图或视频截图,缩略图支持格式jpeg, tiff, gif, bmp, png,截图支持格式: jpg和png,此法将占用一个Http连接,在Content读取完毕或显示关闭时释放连接。

getCutImage

根据宽度和高度获取剪切图,先截取图片左边和上边,截取到一定大小后(比较小的时候),会截取四边,保留中间部分,当设定值大于图片实际宽、高时,会根据实际大小裁剪,支持 jpeg, tiff, gif, bmp, emf, exif, wmf, icon, png, memoryBmp, webp。此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。

getImageInfo

获取指定图片信息

transCodingMedia

媒体转码,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。

getVedioFrame

获取视频截图,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。

getMediaInfo

获取媒体对象的信息。

queryMediaByCKs

获取 media 转码记录,用于查询转码进度。

deleteMediaByCK

根据转换后新生成的 key 删除 media 转码记录及转码后的 object。

pfop

图片、音视频异步处理并持久化。

prefop

操作pfop操作进度和操作结果。

4. API描述

(1)初始化服务

描述

RadosgwService 是 OBS 服务的 JAVA 客户端,它为调用者提供一系列与 OBS 进行交互的接口,用于上传下载文件,加密解密文件,处理图片,音视频文件等。用户在调用 SDK 接口前必须先初始化 RadosgwService 服务。

基本配置文件创建服务实例:

  • 基于 ObsClientConfig 接口对象创建服务实例:

    String configFileName = ;
          RadosgwService service = RadosgwServiceFactory.
          getFromConfigFile(configFileName);

    将配置文件信息放在 classpath 下,作为 configFileName.properties 文件存放。

    access_id = theAccessId
          security_id = theSecurityId
          rgw_addr = theObsEndPoint
  • 基于 ObsClientConfig 接口对象创建服务实例:
    ObsClientConfig oc = new ObsClientConfig() {
          public String getUserAgent() {
              return "";
            }
            public String getObsUrl() {
              return "";
            }
            public String getObsAccessKey() {
              return "";
            }
            public String getObsSecret() {
              return "";
            }
          };
          RadosgwService service = RadosgwServiceFactory.getFromConfigObject(oc);
    说明:

    theObsEndPoint请从OBS控制台去获取endpoint,建议使用https 的请求,如"https://obs-cn-shenzhen.yun.pingan.com"。

(2) putObject(文件上传)

接口描述

以 File 对象上传对象存储,若对象存在则更新。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

需自行实现策略保证同一 bucket 下 objectKey唯一, 首字符不能为路径符。

localFile

File

true

待上传的文件对象

不能超过 1GB

响应参数

参数名称

参数类型

参数描述

备注

putObjectResult

PutObjectResult

PutObjectResult 对象

-

(3) putObject(文件上传)

接口描述

以 File 对象上传对象存储并附带自定义元数据,若对象存在则更新。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

需自行实现策略保证同一 bucket 下 objectKey唯一, 首字符不能为路径符。

localFile

File

true

待上传的文件对象

不能超过 1GB

metadata

ObjectMetadata

true

自定义元数据

key-value 格式,key 只允许使用大写字母、数字、中横线

响应参数

参数名称

参数类型

参数描述

备注

putObjectResult

PutObjectResult

PutObjectResult 对象

-

(4) putObject(流式上传)

接口描述

以 InputStream 形式上传对象存储,若对象存在则更新,建议仅用于上传较小的对象

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

需自行实现策略保证同一 bucket 下 objectKey唯一, 首字符不能为路径符。

inputStream

InputStream

true

待上传的流

-

响应参数

参数名称

参数类型

参数描述

备注

putObjectResult

PutObjectResult

PutObjectResult 对象

-

(5) putObject(流式上传)

接口描述

以 InputStream 形式上传对象存储并附带对象元数据,若对象存在则更新,大、小对象上传均适用

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

需自行实现策略保证同一 bucket 下 objectKey唯一, 首字符不能为路径符。

inputStream

InputStream

true

待上传的流

-

metadata

ObjectMetadata

true

自定义元数据

key-value 格式,key 只允许使用小写字母、数字、中横线。建议指定 ContentLength,若不指定,流会被首先全部读取到内存再做上传;建议指定 contentType,若不指定,会赋予默认类型 application/octet-stream。

响应参数

参数名称

参数类型

参数描述

备注

putObjectResult

PutObjectResult

PutObjectResult 对象

-

(6) batchPutObject(批量上传)

接口描述

同时上传多个 File 对象到 OBS。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

batchPutFiles

BatchPutFile[]

true

批量上传的文件对象数组

-

响应参数

参数名称

参数类型

参数描述

备注

BatchPutObjectResults

List

每个 BatchPutObjectResult 对象中包含该文件上传信息(比如上传是否成功,上传失败原因,文件 MD5 值等)。

-

(7) putObjectMultipart(分片上传)

接口描述

对于大文件上传,可以切分成片上传。在以下情况下,应该考虑使用分片上传:

  • 文件大于 100M
  • 网络环境差,上传易导致失败
  • 需要支持断点续传

请求参数

参数名称

参数类型

是否必须

参数描述

备注

uploadFileRequest

MutilpartUploadFileRequest

true

分片上传参数 uploadFileRequest 说明:

  • 每个分片(除了最后一个分片)的大小必须不小于 5M,最后一个分片的大小无限制;
  • 若任何一个分片(非最后一个分片)小于 5M,每个分片的上传不会失败,然而分片完成操作(complete)会失败。
  • enableCheckpoint 用于设置是否启用断点续传。默认启用。通过调用 uploadFileRequest.setEnableCheckpoint(false) 关闭断点续传功能。
  • checkpointFile 用于设置断点续传 ucp 文件的保存位置。默认与待上传文件位于同一个目录下面。若非特殊需求,不需要更改此设置。
  • uploadNotifier 用于设置分片上传的通知接收者。可以实现一个 MutilpartUploadNotifier,并调用 uploadFileRequest.setUploadNotifier 来接收分片上传的进展的通知,以达到如进度感知等目的。
  • 一般情况下,应当开启 enabledMd5 来保证文件内容的完整性(默认开启)。

分片上传相较于 s3 已经简化了使用步骤。仅需要调用一个接口。

-

响应参数

(8) abortMultipartUpload(取消分片上传)

接口描述

取消分片上传。分片上传的接口中,当参数 MutilpartUploadFileRequest 的 enableCheckpoint 被设置成 true 时(默认为true),断点续传功能被开启。断点续传允许重试失败的分片,而不需重传已经成功的分片。分片上传会在客户端的文件系统中创建一个分片记录(.ucp)文件。开启断点续传功能后,上传会读取该文件中的记录,而只传还未完成的分片;若此记录文件不存在,则会创建该记录文件,并从头开始上传文件。 由于分片上传的每个片会驻留在 OBS 中,直到所有分片上传完成且执行 complete 操作。未执行 complete 操作的上传,其相关的分片将占用存储资源。用户需要调用取消分片上传的接口来删除这些分片。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

abortRequest

AbortMutilpartUploadRequest

true

初始化

abortRequest参数需传入:

bucket: 对象的 bucket 名称

objectKey:对象 Key

uploadId: 待删除的分片所属的 upload 编号。必须实现 uploadNotifier,在对应通知中获取 uploadId

-

响应参数

(9) putAndCompressObject(文件压缩上传)

接口描述

将File对象进行压缩上传到对象存储,若对象存在则更新。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

需自行实现策略保证同一 bucket 下 objectKey 唯一, 不能为空,首字符不能为路径符

localFile

File

true

待上传的文件对象

不能超过 1GB

metadata

ObjectMetadata

true

自定义元数据

key-value 格式,key 只允许使用小写字母、数字、中横线

mode

CompressMode

true

压缩模式,目前支持MS,ML,ZIP,GZP,LZ4,LZO模式

极限模式(ML):使用FastLZ算法对文件进行压缩/解压。FastLZ算法针对文本文件有很好压缩效果,经测试压缩率接近10%(压缩后文件大小/压缩前文件大小),同时对图片类型格式可取得较好的压缩效果,尤其对位图压缩率可以小于60%。但对于已经压缩文件和音视频文件压缩效果十分差。其压缩速度和解压速度优于传统zip方式。

极速模式(MS):使用SNAPPY压缩算法对文件进行压缩/解压。SNAPPY算法针对文本文件压缩/解压,压缩率15%左右,图片类中对位图压缩缩率小于60%,但其压缩/解压速度为极限压缩数度5倍以上(压缩速度最可达100M/S,解压速度可达:400M/s)。

zip模式(ZIP):使用JDK自带GZIP压缩算法对文件进行压缩/解压 。其详细信息参照JDK。

GZIP压缩(GZIP):使用JDK自带DEFLATE算法对文件进行压缩/解压 。其详细信息参照JDK。

LZ4模式(LZ4):使用LZ77优化后的算法LZ4对文件进行压缩/解压。其主要特点牺牲压缩率获取压缩速度。处理文本文件压缩率大于30%,图片类文件完全无法压缩。 压缩速度和解压速度略小于极速模式。

LZO模式(LZO):LZO 是一个用 ANSI C语言编写的无损压缩库。LZO 非常适合进行数据的实时压缩解压处理,这就是说他更关心操作速度,而不是压缩比例。压缩速度为极速模式二分之一,解压速度为极速模式四分之一。

响应参数

参数名称

参数类型

参数描述

备注

putObjectResult

PutObjectResult

PutObjectResult对象

-

(10)getObject(文件下载)

接口描述

下载指定对象,此方法将占用一个Http连接,在Content读取完毕或显示关闭时释放连接。若仅为了获得对象的描述信息而非内容,请使用headObject接口。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

响应参数

参数名称

参数类型

参数描述

备注

s3object

S3Object

包含对象流的 S3Object 实例,需读取 Content 自行保存

-

(11)getSignedUrl(获取下载链接)

接口描述

获取对象的已签名的下载 URL,使用默认设置。默认有效时间为 20 秒

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

响应参数

参数名称

参数类型

参数描述

备注

url

String

已签名的对象下载 url

url 具有默认的有效期,下载文件名为对象 Key

(12)getSignedUrl(获取下载链接)

接口描述

获取对象的已签名的下载 URL,指定返回 contentDisposition 头以告知浏览器如何显示文件,并使用默认的 url 有效期 20 秒

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

contentDisposition

String

true

在请求url时,期望云存储服务端返回的 content-disposition 头信息

-

响应参数

参数名称

参数类型

参数描述

备注

url

String

已签名的对象下载 url

已签名的对象下载 url,url 具有默认的有效期。最长 15 mins

(13)getSignedUrl(获取下载链接)

接口描述

获取对象的已签名的下载URL,指定返回contentDisposition头以告知浏览器如何显示文件,并指定url有效期(秒)

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

contentDisposition

String

true

在请求url时,期望云存储服务端返回的 content-disposition 头信息

-

expireSeconds

long

true

url 有效秒数

url 生成后,在此时间段内有效,过期的 url 会被云存储拒绝访问

响应参数

参数名称

参数类型

参数描述

备注

url

String

已签名的对象下载 url

(14)getImageViewUrl(获取图片处理下载链接)

接口描述

获取图片处理下载链接

请求参数

字段名称

字段类型

是否必须

字段描述

备注

bucketName

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

contentDisposition

String

true

在请求url时,期望云存储服务端返回的 content-disposition 头信息,默认为null

-

expireSeconds

long

true

url有效秒数,url生成后,在此时间段内有效,过期的url会被云存储拒绝访问,默认为20s

-

formatOps

String

true

参数是必须的,但需要设置为空NULL。

-

响应参数

字段名称

字段类型

字段描述

备注

url

String

已签名的图片处理下载链接

-

(15)batchGetObject(批量下载)

接口描述

根据多个文件的 objectKey 同时下载多个文件。

请求参数

字段名称

字段类型

是否必须

字段描述

备注

bucketName

String

true

保存对象的 bucket 名称

-

objectKeys

String[]

true

objectKey 数组

-

响应参数

字段名称

字段类型

字段描述

备注

batchS3ObjectList

List

批量下载完毕后,SDK 将返回结果对象 List,循环该 List 去得到每个文件下载后的对象,该对象中包含所下载文件的文件流,另外还有该文件下载时的信息(比如下载是否成功,下载失败原因,文件 MD5 值等。)

-

(16)getAndUncompressObject(文件解压下载)

接口描述

解压指定objectKey对象,然后进行下载。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

响应参数

字段名称

字段类型

字段描述

备注

s3Object

S3Object

包含对象流的 S3Object 实例,需读取 Content 自行保存

-

(17)listObjects(查询bucket下的对象列表)

接口描述

查询bucket下的对象列表。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

listObjectsRequest

ListObjectsRequest

true

listObjectsRequest: 查询参数:

listObjectsRequest.delimiter 一个用于对KEY进行分组的字符。如果查询参数中指定了prefix,则在查询结果中,对KEY计算从prefix到第一次匹配delimiter的位置的截取串,所有KEY按此截取串进行分组且将结果放于元素CommonPrefixes下;若未指定prefix,则截取从KEY的开始位置执行计算。CommonPrefixes下面的KEY将不会在出现在查询结果中的其它位置。

listObjectsRequest.marker指定查询KEY的起始位置(不包括此KEY)。

listObjectsRequest. max-keys 查询结果最大Key的数量,默认为1000。

listObjectsRequest.prefix指定查询前缀。

-

响应参数

字段名称

字段类型

字段描述

备注

objectListing

ObjectListing

查询结果:

ObjectListing .isTruncated 查询结果是否被截取。若被截取,则表示查询还有下一页。

ObjectListing. nextMarker 下一页的mark。注意:此字段仅在请求中包含了delimiter参数时才会出现在响应中。否则,应该取响应中的KEY列表(object Summarie

s)的最后一个元素作为下一页请求的mark参数。

-

(18)headObject(获取文件信息)

接口描述

获得对象描述信息以及自定义元数据

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

响应参数

字段名称

字段类型

字段描述

备注

objectMetadata

ObjectMetadata

对象元数据 ObjectMetadata

-

(19)deleteObject(删除Object)

接口描述

删除指定对象

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

响应参数

(20)encryptFile(加密文件)

接口描述

客户端加密是指用户数据在发送给远端服务器之前,通过SDK完成加密,而加密所用的密钥由用户方自己保存,从而可以保证用户数据安全和密钥唯一性,即使数据泄漏别人也无法解密得到原始数据。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

file

File

true

文件对象

-

keySource

String

true

加密文件用的密钥

-

响应参数

字段名称

字段类型

字段描述

备注

inputStream

InputStream

文件加密流

(21)encryptInputStream(加密文件流)

接口描述

客户端加密是指用户数据在发送给远端服务器之前,通过SDK完成加密,而加密所用的密钥由用户方自己保存,从而可以保证用户数据安全和密钥唯一性,即使数据泄漏别人也无法解密得到原始数据。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

inputStream

InputStream

true

文件流

-

keySource

String

true

加密文件用的密钥

-

响应参数

字段名称

字段类型

字段描述

备注

inputStream

InputStream

文件加密流

-

(22)decryptFile(解密文件)

接口描述

客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

file

File

true

文件对象

-

keySource

String

true

加密文件用的密钥

-

响应参数

字段名称

字段类型

字段描述

备注

inputStream

InputStream

文件解密流

-

(23)decryptInputStream(解密文件流)

接口描述

客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

inputStream

InputStream

true

文件流

-

keySource

String

true

加密文件用的密钥

-

响应参数

字段名称

字段类型

字段描述

备注

inputStream

InputStream

文件解密流

-

(24)getImageView(图片格式转换)

接口描述

客户端解密是指用户从OBS服务器获取密文后,在客户端进行数据解密。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

mode

String

true

缩放方式,有效值 0~5。

  • 0:限定缩略图的长边最多为 ,短边最多为 ,进行等比缩放,不裁剪。如果只指定 w 参数则表示限定长边(短边自适应),只指定 h 参数则表示限定短边(长边自适应)。
  • 1:限定缩略图的宽最少为 ,高最少为 ,进行等比缩放,居中裁剪。转后的缩略图通常恰好是 x 的大小(有一个边缩放的时候会因为超出矩形框而被裁剪掉多余部分)。如果只指定 w 参数或只指定 h 参数,代表限定为长宽相等的正方图。
  • 2: 限定缩略图的宽最多为 ,高最多为 ,进行等比缩放,不裁剪。如果只指定 w 参数则表示限定宽(长自适应),只指定 h 参数则表示限定长(宽自适应)。它和模式0类似,区别只是限定宽和高,不是限定长边和短边。从应用场景来说,模式0适合移动设备上做缩略图,模式2适合PC上做缩略图。

  • 3: 限定缩略图的宽最少为 ,高最少为 ,进行等比缩放,不裁剪。如果只指定 w 参数或只指定 h 参数,代表长宽限定为同样的值。你可以理解为模式1是模式3的结果再做居中裁剪得到的。

  • 4:限定缩略图的长边最少为 ,短边最少为 ,进行等比缩放,不裁剪。如果只指定 w 参数或只指定 h 参数,表示长边短边限定为同样的值。这个模式很适合在手持设备做图片的全屏查看(把这里的长边短边分别设为手机屏幕的分辨率即可),生成的图片尺寸刚好充满整个屏幕(某一个边可能会超出屏幕)。

  • 5: 限定缩略图的长边最少为 ,短边最少为 ,进行等比缩放,居中裁剪。如果只指定 w 参数或只指定 h 参数,表示长边短边限定为同样的值。同上模式4,但超出限定的矩形部分会被裁剪。 `width:` 图片宽度,非负数,有效值(0-6000)

    height:图片高度,非负数,有效值(0-6000)

    imageFormat: 图片格式(非必传),支持jpeg, tiff, gif, bmp, png

-

响应参数

字段名称

字段类型

字段描述

备注

s3object

S3Object

包含对象流的 S3Object 实例,需读取 Content 自行保存

-

(25)getThumbnail (获取缩略图或视频截图)

接口描述

根据自定义规则获取缩略图或视频截图,缩略图支持格式jpeg, tiff, gif, bmp, png,截图支持格式:` jpg和png,此法将占用一个Http连接,在Content读取完毕或显示关闭时释放连接。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

formatName

String

true

适配规则名称: 作为条件从数据库获取对应的自定义规则,然后截取第一个/前的内容进行适配,若为imageView则是图片缩放,若为vframe,则是视频截图

-

rectify

String

false

是否需要校正`(“true”或”false”,非必传),只对视频截图进行校正,旋转90或270(只是宽和高的长度换,并不是真正的旋转)

-

响应参数

字段名称

字段类型

字段描述

备注

s3object

S3Object

包含对象流的 S3Object 实例,需读取 Content 自行保存

-

(26)getCutImage (图片剪切)

接口描述

根据宽度和高度获取剪切图,先截取图片左边和上边,截取到一定大小后(比较小的时候),会截取四边,保留中间部分,当设定值大于图片实际宽、高时,会根据实际大小裁剪,支持 jpeg, tiff, gif, bmp, emf, exif, wmf, icon, png, memoryBmp, webp。此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

width

int

true

图片宽度,非负数,有效值(0-6000)

-

height

int

true

图片高度,非负数,有效值(0-6000)

-

响应参数

字段名称

字段类型

字段描述

备注

s3object

S3Object

包含对象流的 S3Object 实例,需读取 Content 自行保存

-

(27)getImageInfo(获取图片信息)

接口描述

获取指定图片信息。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

响应参数

字段名称

字段类型

字段描述

备注

imageInfoStr

InputStream

图片信息,json格式字符串,示例如下:

{"ColorModel": "rgb", //颜色模式
        "Format": "jpeg", //图片格式
        "FrameNumber": 0, //缩放方式,与 mode 一样
        "Height": 1707,
        "Width": 963
      }

-

(28)transCodingMedia(媒体转码)

接口描述

媒体转码,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

format

String

true

转码后对象的格式

-

notifyURL

String

true

转码JOB的通知URL

-

响应参数

字段名称

字段类型

字段描述

备注

s3object

S3Object

包含对象流的 S3Object 实例,需读取 Content 自行保存

-

(29)getVedioFrame(视频截图)

接口描述

获取视频截图,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

format

String

true

截图的格式、尺寸

-

响应参数

字段名称

字段类型

字段描述

备注

s3object

S3Object

包含对象流的 S3Object 实例,需读取 Content 自行保存

-

(30)getMediaInfo(获取媒体信息)

接口描述

获取视频截图,此方法将占用一个 Http 连接,在 Content 读取完毕或显示关闭时释放连接。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

objectKey

String

true

对象 Key

-

响应参数

字段名称

字段类型

字段描述

备注

mediaInfoStr

String

媒体对象的信息,json格式字符串,示例如下:

{
      "streams": [{
      "index": 0,
      "codec_name": "mjpeg",
      "codec_long_name": "MJPEG (Motion JPEG)",
      "codec_type": "video",
      "codec_time_base": "1/25",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "width": 3885,
      "height": 2764,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "3885:2764",
      "pix_fmt": "yuvj444p",
      "level": -99,
      "color_range": "pc",
      "color_space": "bt470bg",
      "chroma_location": "center",
      "refs": 1,
      "r_frame_rate": "25/1",
      "avg_frame_rate": "0/0",
      "time_base": "1/25",
      "bits_per_raw_sample": "8",
      "disposition": {
      "default": 0,
      "dub": 0,
      "original": 0,
      "comment": 0,
      "lyrics": 0,
      "karaoke": 0,
      "forced": 0,
      "hearing_impaired": 0,
      "visual_impaired": 0,
      "clean_effects": 0,
      "attached_pic": 0
      }
      }],
      "format": {
      "filename": "/wls/appsystems/csp-media/data/0b5f036604ea452fbc26810946293644xiaoming-bucket-0009.46a5476297c740239820ed4d64e256a6$002",
      "nb_streams": 1,
      "nb_programs": 0,
      "format_name": "jpeg_pipe",
      "format_long_name": "piped jpeg sequence",
      "size": "1659948",
      "probe_score": 6
      }
      }

-

(31)queryMediaByCKs(获取转码记录)

接口描述

获取 media 转码记录,用于查询转码进度

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

convertedKeys

List

true

转换后新生成的对象Key集合

-

响应参数

字段名称

字段类型

字段描述

备注

mediaResultStr

String

音视频转码进度信息,json字符串,示例如下:

[{
      "bucket": "yourBucket",
      "finishTime": "2017-07-14 13:56:54",
      "submitTime": "2017-07-14 13:56:53",
      "startTime": "2017-07-14 13:56:53",
      "state": "Error", // 状态,用于反应转码进度
      "oriObjectKey": "46a5476297c740239820ed4d64e256a6$002", // 原始key
      "message": "desFile.exists: false", // 失败原因
      "convertedKey": "yourConvertedKey "
      }]

-

(32)deleteMediaByCK(删除转码信息)

接口描述

根据转换后新生成的 key 删除 media 转码记录及转码后的 object。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

bucket

String

true

保存对象的 bucket 名称

-

convertedKey

String

true

转换后新生成的对象 Key

-

响应参数

(33)pfop(图片处理,音视频转码持久化处理(PFOP接口))

接口描述

图片、音视频异步处理并持久化。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

sourceType

SourceType

true

媒体类型

-

srcBucket

String

true

源bucket

-

srcKey

String

true

源key

-

force

boolean

true

指定当处理后的KEY已经存在于bucket中是否覆盖已经存在的对象。为true时覆盖。

-

notifyUrl

String

true

异步处理完成后通知客户的地址。

-

ops

String

true

持久处理操作列表,用 | 分隔,如:

avthumb/wma;
      saveas/ZGRhc2U6cGxhaW50ZXh0LWZyYW1lLTFa|avthumb/mp3;

saveas/ZGRhc2U6cGxhaW50ZXh0LWZyYW1lMVU= 是将源视频文件转成wma并以KEY mywma 存储在bucket ddase下;转成mp3并以KEY mymp3 存储在bucket ddase下。

一个持久处理包括处理命令和存储设置,用 ; 分隔。存储设置以saveas/开头,后接按Base64编码后的字符串。若不指定saveas,则会由obs生成一个key并保存在srcBucket下。

-

响应参数

字段名称

字段类型

字段描述

备注

resultStr

String

Pfop异步操作流水号JSON,用于查询操作进度。

{"persistentId":
      "0443351fbb564de38542f8c092d18389fe9f8345f3ca"}

-

(34)Prefop(PFOP持久化处理结果查询)

接口描述

操作pfop操作进度和操作结果。

请求参数

参数名称

参数类型

是否必须

参数描述

备注

persistentId

String

true

异步处理流水号

-

响应参数

字段名称

字段类型

字段描述

备注

resultStr

String

查询响应为content-type为application/json的字符串,示例如下:

{
      "id":"0f7edf1e508e4620b8784e5ca4dd7554fe9f82ff1b31",
      "notifyState":"0",
      "desc":"The fop was completed successfully",
      "notifyTryTimes":4,
      "items":[{
      "cmd":"convert/900/600/png/75",
      "desc":"success",
      "error":"",
      "hash":"\"b2e18e821063c7713e497dd0c9a6a7e3\"",
      "code":0,
      "key":"ZGRhc2U6ZGRhc2VhYzRlZjIyOGQxNDQ0MDRiYmM5ZDYyNzE2ZWU5M2ZhNjA="},
      {"cmd":"thumb/0/700/800/png/75",
      "desc":"success",
      "error":"",
      "hash":"\"ab63afa8d90fc944ed437d91d8d10b81\"",
      "code":0,
      "key":"ZGRhc2U6ZGRhc2U2YjIyOGQ0MWZjZmQ0NTllOGQ2OTRkYTgzNDJmYjkyYzA="},
      {"cmd":"imageslim",
      "desc":"success",
      "error":"",
      "hash":"\"4e3cd2637001ce77d95928a0e961548f\"",
      "code":0,
      "key":"ZGRhc2U6ZGRhc2U0MTcwZWQ0NDc4NzU0NzNkYjUwM2Q5NzU2OTUxN2Y5NTA="
      }],
      "inputKey":"1222_1-test",
      "inputBucket":"ddase",
      "code":0,
      "notifyResponseCode":200
      }

-

查询结果说明:

名称

必填

描述

code

状态码 0:成功,1:正在处理,2:处理成功但PFOP操作列表部分或全部失败,3:处理失败

desc

对应code的描述

id

PFOP持久处理流水号

inputBucket

源文件所在bucket

inputKey

源文件所在key

items

持久操作列表(仅当code码为0/2时该字段有值),与通知内容中的items一致,请参阅 通知内容说明

notifyState

通知状态 0:成功,1:等待通知,2:通知失败,3:通知彻底失败并不再尝试通知。为空表示处理还未完成。

notifyResponseCode

通知客户端的响应码,当响应为200时被认为通知成功

notifyResponseBody

通知响应,当通知失败时为失败相关的信息

notifyTryTimes

通知客户端已经尝试的次数

常用实现场景

场景描述

平安云ECS主机上传,生成公网可访问的下载链接。

实现过程

初始化上传service

RadosgwService uploadService = RadosgwServiceFactory.getFromConfigFile("obs_ecs_upload.properties");

初始化生成公网链接service

RadosgwService urlService=RadosgwServiceFactory.getFromConfigFile("obs_ext_url.properties");

调用上传服务

uploadService.putObject("bucket", "objectKey", new File("filePath"));

生成公网下载链接

String url=urlService.getSignedUrl("bucket", "objectKey");

配置文件信息

obs_ecs_upload.properties obs_ext_url.properties

access_id= Access Key ID which have upload rights

security_id=Access Key Secret which have upload rights

rgw_addr=obs-cn-shenzhen-internal.cloud.papub

access_id= Access Key ID which have download rights

security_id=Access Key Secret which have download rights

rgw_addr=obs-cn-shenzhen.pinganyun.com

Did the above content solve your problem? Yes No
Please complete information!

Call us

400-151-8800

Email us

cloud@pingan.com

Online customer service

Instant reply

Technical Support

cloud products