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

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


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

点我跳转: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 block
			e.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 block
			System.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("");
	    //视频分类ID
	    request.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 block
			e.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();
	    
	    //视频id
	    request.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”;

    @Override
    protected 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 callback
        VODUploadCallback 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:上传完成(转码以及改变清晰度)

在这里插入图片描述

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

发布了43 篇原创文章 · 获赞 19 · 访问量 3075

猜你喜欢

转载自blog.csdn.net/qq_41974199/article/details/103630214
今日推荐