Android(安卓)上传文件到阿里云点播,阿里云点播转码

文章目录

  • Android(安卓)上传文件到阿里云点播,阿里云点播转码
    • 一:登录阿里云点播平台配置添加转码模板组
      • 1:需要什么参数,可自行填写。然后保存。(如图)
      • 2:把获取的模板 ID 保存下载,一会上传文件转码用。
    • 二:服务端获取上传地址和凭证及播放地址
      • 1:添加maven仓库(pom.xml)
      • 2:添加Jar包依赖
      • 3:媒体上传(初始化客户端,获取上传地址和凭证)
      • 4:获取视频播放地址
    • 三:客户端从服务端获取上传地址和凭证及上传文件
      • 1:在Maven项目中加入依赖项
      • 2:配置阿里云仓库
      • 3:配置权限
      • 4:上传媒体文件
      • 5:上传完成(转码以及改变清晰度)



一:登录阿里云点播平台配置添加转码模板组

点我跳转:https://vod.console.aliyun.com/?spm=5176.8413026.1397775…2ead11cfTYJHei&aly_as=bwVll4Al#/settings/transcode/list


1:需要什么参数,可自行填写。然后保存。(如图)

2:把获取的模板 ID 保存下载,一会上传文件转码用。

二:服务端获取上传地址和凭证及播放地址

1:添加maven仓库(pom.xml)

<repositories><repository><id>sonatype-nexus-staging</id><name>Sonatype Nexus Staging</name><url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>

2:添加Jar包依赖

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.3.3</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.15.5</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version></dependency>

3:媒体上传(初始化客户端,获取上传地址和凭证)


public class Index {public static void main(String[] args) {try {//初始化DefaultAcsClient msg = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");System.out.println(msg);} catch (ClientException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** * RequestId:请求ID* VideoId:视频ID。* UploadAddress:上传地址。* UploadAuth:上传凭证。* */public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {String regionId = "cn-shanghai";  // 点播服务接入区域//初始化DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);//获取上传地址和凭证CreateUploadVideoResponse response = new CreateUploadVideoResponse ();try {response = createUploadVideo(client);System.out.print("VideoId = " + response.getVideoId() + "\n");System.out.print("UploadAddress = " + response.getUploadAddress() + "\n");System.out.print("UploadAuth = " + response.getUploadAuth() + "\n");} catch (Exception e) {// TODO Auto-generated catch blockSystem.out.print("ErrorMessage = " + e.getLocalizedMessage());}System.out.print("RequestId = " + response.getRequestId() + "\n");return client;}/*** 获取视频上传地址和凭证* @param client 发送请求客户端* @return CreateUploadVideoResponse 获取视频上传地址和凭证响应数据* @throws Exception*/public static CreateUploadVideoResponse createUploadVideo(DefaultAcsClient client) throws Exception {CreateUploadVideoRequest request = new CreateUploadVideoRequest();//视频标题request.setTitle("this is a sample");//视频源文件名request.setFileName("filename2.mp4");//转码模板组ID(第一部分网站部分获得,转码模板ID)request.setTemplateGroupId("XXX");//文件大小request.setFileSize(null);//视频描述request.setDescription("");//自定义视频封面URL地址request.setCoverURL("");//视频分类IDrequest.setCateId(null);//视频标签request.setTags(null);//存储地址(无需填写,如需更改,可登陆 点播控制台 > 存储管理 里查看存储地址)request.setStorageLocation(null);//应用ID(取值如:app-1000000。使用说明参考文档 多应用。)request.setAppId(null);//工作流ID(使用说明参考文档 工作流。)request.setWorkflowId(null);//UserData,用户自定义设置参数,用户需要单独回调URL及数据透传时设置(非必须)//JSONObject userData = new JSONObject();//UserData回调部分设置//JSONObject messageCallback = new JSONObject();//messageCallback.put("CallbackURL", "http://xxxxx");//messageCallback.put("CallbackType", "http");//userData.put("MessageCallback", messageCallback.toJSONString());//UserData透传数据部分设置//JSONObject extend = new JSONObject();//extend.put("MyId", "user-defined-id");//userData.put("Extend", extend.toJSONString());//request.setUserData(userData.toJSONString());return client.getAcsResponse(request);}}
问题 解决
accessKeyId 登录阿里云控制台获取accessKeyId(建议创建RAM子账号访问)
accessKeySecret 登录阿里云控制台获取accessKeySecret(建议创建RAM子账号访问)
request.setTemplateGroupId(“XXX”); 转码模板组ID(第一部分中创建的模板ID)
UploadAuth 上传文件时使用(详细见第三部分)
UploadAddress 上传文件时使用(详细见第三部分)

4:获取视频播放地址


public class GetPlay {public static void main(String[] args) {try {//初始化DefaultAcsClient msg = initVodClient("LTAI4FnKLBWt16rLcaFsjtJ4","xZSXejzr93PrlB9UXJ04L5cPcvfzlr");System.out.println(msg);GetPlayInfoResponse response = new GetPlayInfoResponse();try {response = getPlayInfo(msg);List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();//播放地址for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {System.out.print("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "\n");}//Base信息System.out.print("VideoBase.Title = " + response.getVideoBase().getTitle() + "\n");} catch (Exception e) {System.out.print("ErrorMessage = " + e.getLocalizedMessage());}System.out.print("RequestId = " + response.getRequestId() + "\n");} catch (ClientException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {String regionId = "cn-shanghai";  // 点播服务接入区域//初始化DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);return client;}/*获取播放地址函数*/public static GetPlayInfoResponse getPlayInfo(DefaultAcsClient client) throws Exception {GetPlayInfoRequest request = new GetPlayInfoRequest();//视频idrequest.setVideoId("bc0adcb0e3f2477a8ee65f027cc6141d");return client.getAcsResponse(request);}}
问题 解决
PlayInfo.PlayURL 返回的视频播放地址(详细见上方代码)

三:客户端从服务端获取上传地址和凭证及上传文件

1:在Maven项目中加入依赖项


implementation 'com.aliyun.video.android:upload:1.5.5'
implementation 'de.gerdi-project:GSON:6.0.6'

2:配置阿里云仓库


maven{ url'http://maven.aliyun.com/nexus/content/groups/public/'}
maven { url "https://maven.aliyun.com/nexus/content/repositories/releases" }

3:配置权限


<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

如果配置权限时出现 红色 下划线,请点击这里https://blog.csdn.net/qq_41974199/article/details/103622925

4:上传媒体文件


public class MainActivity extends AppCompatActivity {//在第二部分服务端获取相关信息中获得String uploadAuth= “XXX”;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (Build.VERSION.SDK_INT >= 23) {int REQUEST_CODE_CONTACT = 101;String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE}; //验证是否许可权限for (String str : permissions) {if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {//申请权限this.requestPermissions(permissions, REQUEST_CODE_CONTACT); return;}}}//初始化final VODUploadClient uploader=new VODUploadClientImpl(this.getApplicationContext());//初始化
//        final VODUploadClient uploader=new VODUploadClientImpl(this);
//        System.out.println(uploader);Toast.makeText(this, "开始上传", Toast.LENGTH_SHORT).show();// setup callbackVODUploadCallback callback = new VODUploadCallback() {public void onUploadSucceed(UploadFileInfo info) {System.out.println("onsucceed ------------------" + info.getFilePath());Toast.makeText(MainActivity.this,"上传完成",Toast.LENGTH_SHORT).show();}public void onUploadFailed(UploadFileInfo info, String code, String message) {System.out.println("onfailed ------------------ " + info.getFilePath() + " " + code + " " + message);Toast.makeText(MainActivity.this,"上传失败",Toast.LENGTH_SHORT).show();}//上传进度public void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize) {System.out.println("onProgress ------------------ " + info.getFilePath() + " " + uploadedSize + " " + totalSize);}//凭证5分钟过期,过期后需要重新获取public void onUploadTokenExpired() {System.out.println("onExpired ------------- ");// 重新刷新上传凭证:RefreshUploadVideo
//                String uploadAuth = aa;
//                uploader.resumeWithAuth(uploadAuth);}//public void onUploadRetry(String code, String message) {System.out.println("onUploadRetry ------------- ");Toast.makeText(MainActivity.this,"上传开始重试",Toast.LENGTH_SHORT).show();}public void onUploadRetryResume() {System.out.println("onUploadRetryResume ------------- ");Toast.makeText(MainActivity.this,"上传结束重试,继续上传回调",Toast.LENGTH_SHORT).show();}/*** 上传地址和凭证方式上传需要调用setUploadAuthAndAddress:uploadAuth:uploadAddress:方法设置上传地址和凭证*  fileInfo 上传文件信息* */public void onUploadStarted(UploadFileInfo uploadFileInfo) {System.out.println("onUploadStarted ------------- ");uploader.setUploadAuthAndAddress(uploadFileInfo, uploadAuth, uploadAddress);Toast.makeText(MainActivity.this,"开始上传回调",Toast.LENGTH_SHORT).show();}};//上传初始化uploader.init(callback);File file = new File(getExternalFilesDir(null), "china.mp4");System.out.println(file+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");//本地文件地址String filePath = "/storage/emulated/0/download/china.mp4";VodInfo vodInfo = new VodInfo();vodInfo.setTitle("标题");vodInfo.setDesc("描述");vodInfo.setCateId (19);vodInfo.setIsProcess(true);uploader.addFile(filePath,vodInfo);uploader.start();}}
问题 解决
uploadAuth 在第二部分服务端获得,详细见第二部分
uploadAddress 在第二部分服务端获得,详细见第二部分


5:上传完成(转码以及改变清晰度)

暂时更新这么多
复制代码可直接运行
有问题可在下方留言

Android(安卓)上传文件到阿里云点播,阿里云点播转码相关推荐

  1. Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器)

    Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器) 主要思路 上传图片的思路有两种: 第一种是上传到应用服务器,再由应用服务器上传到OSS.这种适合上传的文件较小,较为简单, ...

  2. php上传手机文件到服务器,安卓上传文件至PHP服务器(示例代码)

    前两个月有幸参加一次免费培训,开发了一款小软件.发现AsyncHttpClient还真是好用. 直奔主题,安卓上传文件至PHP服务器: 1.PHP端服务器: //链接数据库 include (&quo ...

  3. 后端实现上传文件接口,并使用阿里云的oss对象存储

    在阿里云搜索对象存储oss,开通并进入到控制台 进入到控制台后,选择bucket列表然后创建bucket,bucket就类似文件夹 然后如果没有accesskey的要先创建,在右上角头像处 接下来就该 ...

  4. Qt——记录:http表单格式上传文件到七牛云和阿里云

    环境:windows10 版本:Qt 5.15.2 工具:Qt Creator 背景:通过http表单格式上传文件,兼容阿里云和七牛云. 一.记录问题:上传文件到阿里云 问题1:ErrorCode: ...

  5. Android Oss上传文件简单使用

    一.oos简介  阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务. 官网文档地址 :https://help.a ...

  6. android requestparams传入对象,Android xutils3上传文件使用示例

    Android xutils3工具上传文件非常方便,只需要传入File文件数据或一些其它参数给RequestParams对象即可完成,现在我们来开始使用xutils工具上传文件吧! 步骤一:需要在项目 ...

  7. android 上传html文件大小,浅谈关于Android WebView上传文件的解决方案

    我们在开发需求的时候,难免会接入一下第三方的H5页面,有些H5页面是具有上传照片的功能,Android 中的 WebView是不能直接打开文件选择弹框的 接下来我讲简单提供一下解决方案,先说一下思路 ...

  8. android volley 上传图片 和参数,android Volley 上传文件上传图片

    android volley 实现上传文件功能 Volley不解释了吧, android 官方的一个网络请求库. 源代码的地址在: git@github.com:com314159/VolleyMul ...

  9. android http上传文件

    在Android的客户端编程中(特别是SNS 类型的客户端),经常需要实现注册功能Activity,要用户输入用户名,密码,邮箱,照片后注册.但这时就有一个问题,在HTML中用form表单就能实现如上 ...

  10. java fileupload 进度_Java上传文件进度条的实现方法(附demo源码下载)

    本文实例讲述了Java上传文件进度条的实现方法.分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以 ...

最新文章

  1. 微信小程序,是不是一盘可口的菜!
  2. 京东网络开放之路——自研交换机探索与实践
  3. 【转载】Linux修改文件权限
  4. 线性代数及其应用(part4)--特征向量与线性变换
  5. dbscan用 java代码_聚类算法之DBScan(Java实现)[转]
  6. MATLAB可以打开gms文件吗,gms文件扩展名,gms文件怎么打开?
  7. arcgis判断两个字段是否相等
  8. Kaggle新手入门
  9. 怎么让百度收录站点的图片呢?
  10. WordPress云解析HTML5播放器
  11. svchost.exe占用网速多
  12. 基于Go语言Iris+Vue+ElementUI的OA办公系统
  13. 华为HMS对谷歌GMS,有多大胜算?
  14. 回溯算法(回溯搜索法)
  15. 电脑怎么实现长截图、滚动截图?亲测三款好用软件,附图文教程
  16. 第一章-走近群智感知,辨识庐山真面目
  17. UE4之生成pak文件
  18. 分享4款非常实用的黑科技APP,使用过后才发现离不开它们了
  19. 逆战小白提升日記——网红时钟罗盘北京时间页代码
  20. 关闭mybatis 日志

热门文章

  1. 缓存EHCache的使用教程
  2. git配置代理获取资源
  3. 深度学习实战案例:基于LSTM的四种方法进行电影评论情感分类预测(附完整代码)
  4. 游戏开发29课 cocoscreator 多分辨率适配方案
  5. linux命令模拟回车,linux之expect模拟操作
  6. Python函数的概念以及定义方式
  7. SecureCRT停止滚屏 SecureCRT停止打印的设定
  8. 人类史上首个太空 AI 机器人,IBM 和空客如何两年开发了它?
  9. 百度搜索软件名称时提供的快速下载的软件可能有病毒或非官方
  10. 萤火虫算法_40多种智能优化算法原理和代码分享