Android(安卓)上传文件到阿里云点播,阿里云点播转码
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(安卓)上传文件到阿里云点播,阿里云点播转码相关推荐
- Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器)
Spring boot上传文件(图片)到阿里云OSS(直接上传到应用服务器) 主要思路 上传图片的思路有两种: 第一种是上传到应用服务器,再由应用服务器上传到OSS.这种适合上传的文件较小,较为简单, ...
- php上传手机文件到服务器,安卓上传文件至PHP服务器(示例代码)
前两个月有幸参加一次免费培训,开发了一款小软件.发现AsyncHttpClient还真是好用. 直奔主题,安卓上传文件至PHP服务器: 1.PHP端服务器: //链接数据库 include (&quo ...
- 后端实现上传文件接口,并使用阿里云的oss对象存储
在阿里云搜索对象存储oss,开通并进入到控制台 进入到控制台后,选择bucket列表然后创建bucket,bucket就类似文件夹 然后如果没有accesskey的要先创建,在右上角头像处 接下来就该 ...
- Qt——记录:http表单格式上传文件到七牛云和阿里云
环境:windows10 版本:Qt 5.15.2 工具:Qt Creator 背景:通过http表单格式上传文件,兼容阿里云和七牛云. 一.记录问题:上传文件到阿里云 问题1:ErrorCode: ...
- Android Oss上传文件简单使用
一.oos简介 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务. 官网文档地址 :https://help.a ...
- android requestparams传入对象,Android xutils3上传文件使用示例
Android xutils3工具上传文件非常方便,只需要传入File文件数据或一些其它参数给RequestParams对象即可完成,现在我们来开始使用xutils工具上传文件吧! 步骤一:需要在项目 ...
- android 上传html文件大小,浅谈关于Android WebView上传文件的解决方案
我们在开发需求的时候,难免会接入一下第三方的H5页面,有些H5页面是具有上传照片的功能,Android 中的 WebView是不能直接打开文件选择弹框的 接下来我讲简单提供一下解决方案,先说一下思路 ...
- android volley 上传图片 和参数,android Volley 上传文件上传图片
android volley 实现上传文件功能 Volley不解释了吧, android 官方的一个网络请求库. 源代码的地址在: git@github.com:com314159/VolleyMul ...
- android http上传文件
在Android的客户端编程中(特别是SNS 类型的客户端),经常需要实现注册功能Activity,要用户输入用户名,密码,邮箱,照片后注册.但这时就有一个问题,在HTML中用form表单就能实现如上 ...
- java fileupload 进度_Java上传文件进度条的实现方法(附demo源码下载)
本文实例讲述了Java上传文件进度条的实现方法.分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以 ...
最新文章
- 微信小程序,是不是一盘可口的菜!
- 京东网络开放之路——自研交换机探索与实践
- 【转载】Linux修改文件权限
- 线性代数及其应用(part4)--特征向量与线性变换
- dbscan用 java代码_聚类算法之DBScan(Java实现)[转]
- MATLAB可以打开gms文件吗,gms文件扩展名,gms文件怎么打开?
- arcgis判断两个字段是否相等
- Kaggle新手入门
- 怎么让百度收录站点的图片呢?
- WordPress云解析HTML5播放器
- svchost.exe占用网速多
- 基于Go语言Iris+Vue+ElementUI的OA办公系统
- 华为HMS对谷歌GMS,有多大胜算?
- 回溯算法(回溯搜索法)
- 电脑怎么实现长截图、滚动截图?亲测三款好用软件,附图文教程
- 第一章-走近群智感知,辨识庐山真面目
- UE4之生成pak文件
- 分享4款非常实用的黑科技APP,使用过后才发现离不开它们了
- 逆战小白提升日記——网红时钟罗盘北京时间页代码
- 关闭mybatis 日志