# 视频上传 oss
# 1) 调用方式:Ali OSS SDK
# 2) 描述:
- 调用临时 oss 上传授权接口后获取 ak sk token,通过 ak、sk、token 来上传视频
- sdk 下载请参考 阿里云官方文档 (opens new window)
# 3) 描述:
- endpoint:上传授权接口返回,例如:http://oss-accelerate.aliyuncs.com
- bucketName:上传授权接口返回,例如:scione-video
- objectName:上传授权接口返回,例如:health_video/yourvideo.mp4
# 4) 示例代码:
Python:
import oss2
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.StsAuth('AccessKeyId','AccessKeySecret','SecurityToken')
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'yourEndpoint', 'examplebucket')
video = "yourvideo.mp4"
result = bucket.put_object_from_file('obj_name', video)
Java:
implementation 'com.aliyun.dpa:oss-android-sdk:2.9.5'
/**
* 视频上传阿里云oss
*
* @param context
* @param videoPath
* @param ak
* @param sk
* @param token
*/
private void upload(Context context, String videoPath, String ak, String sk, String token) {
String endpoint = "http://oss-accelerate.aliyuncs.com";
OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(ak, sk, token);
//该配置类如果不设置,会有默认配置,具体可看该类
ClientConfiguration conf = new ClientConfiguration();
conf.setConnectionTimeout(60 * 1000); // 连接超时,默认15秒
conf.setSocketTimeout(60 * 1000); // socket超时,默认15秒
conf.setMaxConcurrentRequest(10); // 最大并发请求数,默认5个
conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次
OSSLog.enableLog(); //这个开启会支持写入手机sd卡中的一份日志文件位置在SDCard_path\OSSLog\logs.csv
OSS oss = new OSSClient(context, endpoint, credentialProvider, conf);
String objectName = "health_video/" + videoPath.split("/")[videoPath.split("/").length - 1];
// 构造上传请求
PutObjectRequest put = new PutObjectRequest("scione-video", objectName, videoPath);
// 异步上传时可以设置进度回调
put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
@Override
public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
SciemoUtil.this.onProgress(callback, currentSize * 90 / (double) totalSize);
}
});
OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
Log.d("PutObject", "UploadSuccess");
analysis(objectName);
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 请求异常
if (clientExcepion != null) {
// 本地异常如网络异常等
clientExcepion.printStackTrace();
}
if (serviceException != null) {
// 服务异常
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
onError(callback, "error");
}
});
// task.cancel(); // 可以取消任务
// task.waitUntilFinished(); // 可以等待直到任务完成
}
← 获取临时 oss 上传授权 视频生理分析 →