博客
关于我
Android实现视屏与Base64互转
阅读量:256 次
发布时间:2019-03-01

本文共 1899 字,大约阅读时间需要 6 分钟。

视频转Base64字符串与反向操作详解

1. 视频转Base64字符串

方法说明

该方法将视频文件转换为Base64编码字符串,适用于需要将视频数据进行压缩并进行传输或存储的情况。以下是详细实现步骤:

private String fileBase64String(Uri url) {    try {        InputStream fis = getContentResolver().openInputStream(url);        ByteArrayOutputStream baos = new ByteArrayOutputStream();        byte[] buffer = new byte[1024];        int count = 0;        while ((count = fis.read(buffer)) >= 0) {            baos.write(buffer, 0, count);        }        fis.close();        return Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);    } catch (Exception e) {        Log.e(TAG, "错误-->" + e);        return null;    }}

参数与返回值

  • 参数Uri url,表示需要转换的视频文件路径。
  • 返回值:Base64编码后的字符串,成功时返回该字符串,异常时返回null。

2. Base64字符串转视频

方法说明

将Base64编码字符串转换回视频文件,适用于需要将压缩后的数据恢复为视频文件的情况。以下是详细实现步骤:

public static void base64ToVideo(String base64) {    try {        byte[] videoByte = Base64.decode(base64.getBytes(), Base64.DEFAULT);        File videoFile = new File(Environment.getExternalStorageDirectory() +                "/Convert.mp4");        if (videoFile.exists()) {            videoFile.delete();        }        if (!videoFile.createNewFile()) {            throw new IOException("无法创建新文件");        }        FileOutputStream fos = new FileOutputStream(videoFile);        fos.write(videoByte, 0, videoByte.length);        fos.flush();        fos.close();        Log.d(TAG, "视屏保存的地址--" + videoFile);    } catch (IOException e) {        Log.e(TAG, "base64转换为视频异常", e);    }}

代码解释

  • Base64解密:使用Base64库解密Base64字符串,获取原始视频数据。
  • 文件路径创建:生成视频文件的保存路径,若文件已存在则删除旧文件。
  • 文件创建:尝试创建新文件,若失败抛出异常。
  • 数据写入:将解密后的视频数据写入新建的文件中,完成视频保存。
  • 3. 动态获取权限

    在Android系统中,某些操作需要动态获取权限,以下是常见权限的示例:

    权力说明

    • WRITE_EXTERNAL_STORAGE:允许应用程序写入外部存储设备,如SD卡。
    • MOUNT_UNMOUNT_FILESYSTEMS:允许应用程序挂载或卸载文件系统,这在某些文件操作中可能需要。

    注意事项

    • 权限申请:在AndroidManifest.xml中声明权限,需在开发时注意。
    • 权限使用:在使用相关功能时,需确保已获取相应权限,否则可能引发运行时异常。

    通过以上方法,可以实现视频数据的Base64编码与解码,确保数据在传输过程中的安全性和完整性。动态权限管理也是确保应用程序按规则运行的重要环节。

    转载地址:http://vsfa.baihongyu.com/

    你可能感兴趣的文章
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    NHibernate学习[1]
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>