java 多个歌曲_java 多个文件合并,多个 MP3 合并,InputStream 合并
在企业微信上上传音视频会有时长限制,对于较长的音视频,只能分成几段进行上传,然后再进行合并。
主要功能代码
List inputStreamList = new ArrayList<>();
Enumeration en = Collections.enumeration(inputStreamList);
SequenceInputStream seq1 = new SequenceInputStream(en);
详细代码
public void getInputStreamByMediaIds(List mediaIds) {
List inputStreamList = new ArrayList<>();
for (String mediaId : mediaIds) {
// 拉取临时文件
InputStream inputStream = getInputStreamById(mediaId);
if (inputStream != null) {
inputStreamList.add(inputStream);
}
}
if (CollectionUtils.isEmpty(inputStreamList)) {
return null;
}
String fileName = UUIDUtil.getUUID();
String saveFile = "coachweixin/" + fileName + ".mp3";
File file = new File(saveFile);
File parentFile = new File(file.getParent());
if (!parentFile.exists()) {
parentFile.mkdirs();
}
try {
BufferedOutputStream buff = new BufferedOutputStream(new FileOutputStream(saveFile));
Enumeration en = Collections.enumeration(inputStreamList);
SequenceInputStream seq1 = new SequenceInputStream(en);
int i;
while ((i = seq1.read()) != -1) {
buff.write(i);
}
buff.close();
seq1.close();
} catch (Exception e) {
log.error("getInputStreamByMediaIds error", e);
}
}
/**
* 根据文件id下载文件,去微信下载临时素材,返回InputStream
* @param mediaId
* 媒体id
* @throws Exception
*/
public InputStream getInputStreamById(String mediaId) {
InputStream is = null;
String token = getAccessToken();
String url = EnterpriseWechatApi.GET_TEMP_MEDIA + "?access_token=" + token + "&media_id=" + mediaId;
try {
URL urlGet = new URL(url);
HttpURLConnection http = (HttpURLConnection) urlGet
.openConnection();
http.setRequestMethod("GET"); // 必须是get方式请求
http.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
http.setDoOutput(true);
http.setDoInput(true);
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒
System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒
http.connect();
int code = http.getResponseCode();
if (code == 200 || code == 206) {
is = http.getInputStream();
}
// 获取文件转化为byte流
} catch (Exception e) {
log.error("根据文件id下载文件",e);
}
return is;
}
java 多个歌曲_java 多个文件合并,多个 MP3 合并,InputStream 合并相关推荐
- java 存取xml数据_JAVA读取XML文件数据
XML文档内容如下: title1 title2 title3 JAVA代码如下: package cn.mylucene; import java.io.File; import java.io.I ...
- java ftp 下载慢_Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题
废话不多说了,直接给大家贴代码了,具体代码如下所示: //文件上传 public static boolean uploadToFTP(String url,int port,String usern ...
- java properties 路径问题_Java 读取Properties文件时应注意的路径问题
Java读取properties文件的方法比较多,网上最多的文章是"Java读取properties文件的六种方法",但在Java应用中,最常用还是通过java.lang.Clas ...
- java 删除指定目录_Java 删除目录 指定文件
package delete; import java.io.File; /** * 删除文件操作 * @author zengpan * */ public class DeleteFileTest ...
- java保存图片进度条_Java上传文件进度条的实现方法(附demo源码下载)
本文实例讲述了Java上传文件进度条的实现方法.分享给大家供大家参考,具体如下: 东西很简单,主要用到commons-fileupload,其中有一个progressListener的接口,该接口可以 ...
- java file rename 失败_java重命名文件造成文件不可读写
我想使用java代码对nginx日志文件进行拆分,但是我发现代码执行之后,拆分出来的日志文件没有读写权限,查看文件属性,显示的很诡异: 点击高级按钮,显示你没有权限查看或者编辑这个对象的权限设置: 反 ...
- java 将换行代替_Java批量将文件中的段落替换成空格,根据指定分隔符换行(SQL示例)...
我的需求是SQL文件中有成千的类似数据,我要将它们进行转换格式,如下图 第一步:将字符段楼替换,使用word排版 把数据拷贝到word中,使用特殊字符替换 点击全部替换,替换之后如下图,这时候它是一串 ...
- java properties读取缓存_java 读取 properties文件的各种方法
1.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream ...
- java 导入world数据_java读取world文件,把world文件中的内容,原样输出到页面上。...
POI,处理可以.样式在Java代码中添加就可以.给了一个例子这个是Excel的.package cn.com.my.common; import java.io.File; import java. ...
最新文章
- jenkins自动化部署工具
- Stack:删除并返回栈顶元素?
- 计算机专业可以用台式机吗,Win10X电脑操作系统可以装在台式机吗?
- 打印机服务器不支持1020,win10系统电脑安装hp1020打印机后无法使用的详细技巧
- 快速排序quicksort算法细节优化(一次申请内存/无额外内存排序)
- python封装api给vue_Vue axios api统一管理的封装
- android 获取文件夹的字节数,android java file 清理垃圾获取文件大小 删除文件等操作...
- python3安装后怎么开启_python3.10 如何下载安装?
- .net 遍历数组找重复值写入一个新数组_第二轮 Python 刷题笔记一:数组
- cartographer 前端两个方法:相干性匹配与非线性优化;以及回环检测方法:利用了分枝定界的相干性匹配
- 5加载stm32 keil_【STM32笔记】在SRAM、FLASH中调试代码的配置方法(附详细步骤)...
- 怎么使用 soapui 做接口测试?
- 量化交易 均线、金叉死叉计算与交易策略
- 计算机病毒 笑话,轻松一刻:因为男生的电脑容易中病毒
- 请不要在“微服务”的狂热中迷失自我!
- 优麒麟 20.04 pro更换内核
- FPGA_Verilog学习之旅(3)---VGA贪吃蛇游戏
- 15.4 真实感图形——纹理映射
- 普通麦克风和多阵列麦克风的区别
- 指向指针的指针!!(能让初学者绕晕的东西)