OSS上傳視頻文件記錄

項目中用到了視頻上傳到OSS服務器,做個記錄:

1.首先添加依賴


//添加OSS對象存儲的sdk

compile'com.aliyun.dpa:oss-android-sdk:2.4.5'

compile'com.squareup.okhttp3:okhttp:3.4.1'

compile'com.squareup.okio:okio:1.9.0'


2.權限設置


3.初始化oss



public class OssAuthConfig {

private ContextmContext;

private ActivitymActivity;

private String endpoint ="http://oss-cn-qingdao.aliyuncs.com";//oss服務器所在地.根據oss判斷

private String accessKeyId ="";//注冊oss后獲取到的key

private String secretKeyId ="";//后臺設置加密獲取的stskeyid

private String securityToken ="";//后臺設置加密獲取的ststoken

private String securityExpiration ="";

private String bucketName ="*****";//由后臺在申請oss的時候配置

private StringcurrentTime;

public OssAuthConfig(Context mContext) {

this.mContext = mContext;

}

public OSS initOss(OssAuthBean.DataBean data){

accessKeyId = data.getAccessKeyId();

secretKeyId = data.getAccessKeySecret();

securityToken = data.getSecurityToken();

securityExpiration = data.getExpiration();

//這里的accessKeyId,secretKeyId,securityToken 是

OSSCredentialProvider credentialProvider =

new OSSStsTokenCredentialProvider(accessKeyId,secretKeyId,securityToken);

ClientConfiguration conf =new ClientConfiguration();

conf.setConnectionTimeout(15 *1000);// 連接超時,默認15秒

? ? ? ? conf.setSocketTimeout(15 *1000);// socket超時,默認15秒

? ? ? ? conf.setMaxConcurrentRequest(5);// 最大并發請求數,默認5個

? ? ? ? conf.setMaxErrorRetry(2);// 失敗后最大重試次數,默認2次

? ? ? ? OSS oss =new OSSClient(mContext,endpoint, credentialProvider);

//返回oss對象供調用

return oss;

}

/**

*異步上傳視頻到oss

/

public void upLoadVideo(String path , String name , OSS oss){

// 構造上傳請求

? ? ? ? Calendar calendar = Calendar.getInstance();

Date date = calendar.getTime();

String timeData = getTime(date);

String time = timeData +"-00-00-00";

currentTime = DateUtil.dataOne(time);

final String upLoadName ="OriginalVideo/android/" +currentTime +".mp4";

//upLoadName是上傳的文件存在oss的名字,我這里使用了時間戳

//path是文件在本地的路徑

PutObjectRequest put =new PutObjectRequest(bucketName, upLoadName, path);

? ? ? ? OSSAsyncTask task = oss.asyncPutObject(put,new OSSCompletedCallback() {

@Override

? ? ? ? ? ? public void onSuccess(PutObjectRequest request, PutObjectResult result) {

Log.d("PutObject","UploadSuccess");

if (mOnUploadSuccessListener !=null) {

mOnUploadSuccessListener.onSuccessListener(upLoadName);

}

}

@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());

}

}

});

}

private String getTime(Date date) {//可根據需要自行截取數據顯示

? ? ? ? SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd");

return format.format(date);

}

/**

*設置回調接口方便監聽視頻上傳成功

/

OnUploadSuccessListenermOnUploadSuccessListener;//聲明接口

? ? public void setUploadListener(OnUploadSuccessListener OnUploadSuccessListener) {

mOnUploadSuccessListener = OnUploadSuccessListener;

}

public interface OnUploadSuccessListener {

void onSuccessListener(String name);

}

}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容