关于实现base64文件解码转mp3实现播放功能

1.简介
需求:大致接收一个python后端传输的一段实时录音文件,以base64编码格式为主的,java进行处理,转MP3文件,实现播放小功能。

**一、java对接python后端controller层代码**:
核心:对接收的base64编码文件进行解码处理
方法: 采用Base64.Decoder decoder = Base64.getDecoder();进行解码,采用IO流将文件写入,实现mp3功能播放@PostMapping("/speech")
public Result speech(@RequestBody SyncListPojo<Speech> syncListPojo, HttpServletRequest request) {List<Speech> speeches = syncListPojo.getData();if (null == speeches || speeches.isEmpty()) {return Result.fail("同步数据为空!");}UserDevices current = (UserDevices) request.getAttribute(UserDeviceService.CurrentDevice);System.out.println("current = " + current);if (null == current) {return Result.fail("设备不可用!");}for (Speech speech : speeches) {//base64 转音频 2021-7-19 start//解码

Base64.Decoder decoder = Base64.getDecoder();
String fileDir = upload + “speech” + File.separator + DateUtil.getDateString(new Date(), “yyyy-MM-dd”);
String fileDir1 =“speech” + File.separator + DateUtil.getDateString(new Date(), “yyyy-MM-dd”);
File file = new File(fileDir);
if(!file.exists()){
file.mkdirs();
}
String fileName = UUID.randomUUID()+".wav";
String filePath = fileDir + File.separator + fileName;
String filePath1 = fileDir1 + File.separator + fileName;
byte[] decode = decoder.decode(speech.getBasePath());
try {
for (int i = 0; i <decode.length ; i++) {
if (decode[i] < 0) {
decode[i] += 256;
}
}
FileOutputStream out = new FileOutputStream(filePath);
out.write(decode);
out.flush();
out.close();
if(null != filePath){
speech.setBasePath(filePath1);
speech.setSpeechType(1);
}
} catch (IOException e) {
e.printStackTrace();
log.error(“base64字符串转化成mp3异常,{}”,e);
}

//base64 转音频 2021-7-19 end
if (StringUtil.isEmpty(speech.getNumbers())) {
return Result.fail(JSON.toJSONString(speech) + “numbers不能为空”);
} else if (StringUtil.isEmpty(speech.getCreateDate())) {
return Result.fail(JSON.toJSONString(speech) + “createDate不能为空”);
} else if (StringUtil.isEmpty(speech.getSpeechType())) {
return Result.fail(JSON.toJSONString(speech) + “speechType不能为空”);
} else if (StringUtil.isEmpty(speech.getSpeechContent())) {
return Result.fail(JSON.toJSONString(speech) + “speechContent不能为空”);
}

        speech.setId(StringUtil.getUUID());speech.setUserId(current.getUserId());speech.setUserName(current.getUserName());speech.setLocationId(current.getLocationId());speech.setLocationName(current.getLocationName());speech.setDeviceId(current.getId());speech.setDeviceName(current.getName());}return Result.success(speechClient.inserts(speeches), "同步成功!");
}

关于实现base64文件解码转mp3实现播放功能相关推荐

  1. Base64转/解码Excel文件

    需求: 1.将EXCEL文件进行Base64位转码 2.将Base64字符串解码并解析 1. 将Excel文件进行Base64转码 该方法应该适用于任何文件的转码 /***测试:将文件编码为base6 ...

  2. 通过OpenSSL的接口实现Base64编解码

    对openssl genrsa产生的rsa私钥pem文件,使用普通的base64解码会有问题,如使用https://blog.csdn.net/fengbingchun/article/details ...

  3. java svgbase64转byte_java 图片进行base64 编码解码

    java 图片进行base64 编码解码 刘振兴 代码分享 2017年06月07日 10555 2条评论 import sun.misc.BASE64Decoder; import sun.misc. ...

  4. openssl算法 —— 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

    openssl 加密字符串的方法: 一.利用openssl命令进行BASE64编码解码(base64 encode/decode): 1. BASE64编码命令 对字符串'abc'进行base64编码 ...

  5. python 图片base64 编解码,转换成Opencv,PIL.Image图片格式

    Python PIL.Image和OpenCV图像格式相互转换 二进制打开图片文件,base64编解码转成Opencv格式: # coding: utf-8 import base64 import ...

  6. java 二进制 base64编码_java 按字节读写二进制文件(Base64编码解码)

    最近在做项目时遇到这样一个需求:依次读取本地文件夹里所有文件的内容,转为JSON,发送到ActiveMQ的消息队列, 然后从MQ的消息队列上获取文件的信息,依次写到本地.常见的文件类型,比如.txt ...

  7. 了解Base64编码解码

    我们经常说Base64,那Base64到底是什么呢? Base64是一种基于64个可打印字符来表示二进制数据的表示方法,常用于在通常处理文本数据的场合,表示.传输.存储一些二进制数据,会将不便于查看的 ...

  8. C++实现Base64编解码并应用于图片传输

    前言 最近接触的项目有一个小功能是在服务器(C++)和客户端(Python)之间传输图片,开始这部分是由另外一位同学完成的.但由于服务器是用C++写的,他不是很熟悉,所以让我来完成这部分功能.在项目中 ...

  9. 一些Base64编码/解码及数据压缩/解压方面的知识

    一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...

最新文章

  1. Linux内核OOM机制的浅析
  2. 《剑指offer》第九题(用两个栈实现队列)
  3. 持续集成之应用k8s自动部署
  4. 数据结构-图的基础代码
  5. Leetcode每日一题:44.wildcard-matching(通配符匹配)
  6. 【实用案例】R语言gdm函数实现地理探测器分析
  7. 资源网址合集的合集,上千个链接!
  8. 易语言 多线程,等待所有线程执行完毕后操作
  9. 微信公众号开发中遇到的问题——支付(二)
  10. RabbitMQ镜像队列与负载均衡
  11. 【文件包含漏洞03】文件包含漏洞的空字符绕过及六种利用方式
  12. C#:base64解码显示
  13. 安装nvcc CUDNN
  14. 1万的android手机推荐,Vertu推天价Android手机:入门级售价1万美元
  15. Android版本新特性总结
  16. linux pjsip 编译_pjsip linux下编译
  17. GLTools-GLFrame概念
  18. 使用idea创建web项目
  19. springcloud zuul的实用配置 如禁止暴露API 简洁URL
  20. 地理及天文学相关知识

热门文章

  1. 使用裁剪工具拉直Lr CC中的照片的小技巧
  2. 霓虹灯效果 函数 作用域
  3. 算法训练 - 调和数列问题 输入一个实数x,求最小的n使得,1/2+1/3+1/4+...+1/(n+1)>=x。   输入的实数x保证大于等于0.01,小于等于5.20,并且恰好有两位小数。你的
  4. 2018年Unity3D游戏开发前景预测
  5. 智能家居:以ZigBee技术实现控制器设计
  6. Excel VBA 批量转换文件夹下的xlsx文件为pdf(多文件多sheet)
  7. 前24券COOnbsp;彭雷:谈“O2O的前…
  8. 网络安全学习篇28_阶段一小结篇_木马的原理及木马防范
  9. 音视频基础之音频常见名词
  10. android测试 掘金,仿掘金框架之listview全解(一)