java利用jaudiotagger随机将MP3分割成小段
首先下载http://www.jthink.net/jaudiotagger/需要用到的jar包并添加引用
我这里用的2.2.3版本,下载链接
import org.jaudiotagger.audio.mp3.MP3AudioHeader;
import org.jaudiotagger.audio.mp3.MP3File;
以下是我的示例代码
//原mp3文件File mSourceMp3File = new File("E:\\Temp\\9274.mp3");MP3File mp3 = new MP3File(mSourceMp3File);MP3AudioHeader header = (MP3AudioHeader) mp3.getAudioHeader();long bitRateKbps = header.getBitRateAsNumber();int length = header.getTrackLength() * 1000 / 2;System.out.println("总时长:" + length);//预备开始截取的时间long beginTime = 0;//截取结算时间long endTime = 0;long orderNum = 0;while (endTime < length) {System.out.println("开始截取第" + (orderNum++) + "段。开始时间点:" + beginTime);Random random = new Random();endTime = (random.nextInt(29) % (10) + 20) * 1000;if (endTime + beginTime > length) {endTime = length;} else {endTime += beginTime;}System.out.println("截取结算时间点-->" + endTime);// 1KByte/s=8Kbps, bitRate *1024L / 8L / 1000L 转换为 bps 每毫秒// 计算出开始字节位置long beginBitRateBpm = (bitRateKbps * 1024L / 8L / 1000L) * beginTime;// 返回音乐数据的第一个字节long firstFrameByte = header.getMp3StartByte();// 获取开始时间所在文件的字节位置long beginByte = firstFrameByte + beginBitRateBpm;// 计算出结束字节位置long endByte = beginByte + (bitRateKbps * 1024L / 8L / 1000L) * (endTime - beginTime);//目标文件String pathname = "e:\\Temp\\" + orderNum + ".mp3";File dFile = new File(pathname);RandomAccessFile dRaf = new RandomAccessFile(dFile, "rw");RandomAccessFile sRaf = new RandomAccessFile(mSourceMp3File, "rw");//先将mp3的头文件写入文件for (long i = 0; i < firstFrameByte; i++) {int m = sRaf.read();dRaf.write(m);}//跳转到指定的位置sRaf.seek(beginByte);//开始写入 mp3实体for (long i = 0; i <= endByte - beginByte; i++) {int m = sRaf.read();dRaf.write(m);}sRaf.close();dRaf.close();//在每段的开始时间点上面减去100毫秒beginTime = endTime - 100;}
本文参考了https://blog.51cto.com/lmdtx/2054251中的资源自己做了一点小小的改动
java利用jaudiotagger随机将MP3分割成小段相关推荐
- 如何将音频分割成小段?
如何将音频分割成小段?有时候我们需要将一个时间较长的音频文件进行分割,将它平均分割成几段,你知道如何操作吗?你可能会说用音频编辑软件,自己算好平均分割后音频的时间,然后再导出来,这种方法虽然也能完成操 ...
- 将视频分割成多段,并将视频中的音频进行单独保存
很多朋友自己在剪辑视频的时候,如果一段素材长达几十分钟,那么该如何将视频进行分割,切成多个小片段,很多小伙伴不知道怎么操作,那么小编今天来分享教程一起来看看吧. 第一步,运行软件[媒体梦工厂]在软件主 ...
- 视频分割,自定义设置视频平均分割成几段的步骤
很多朋友自己在剪辑视频的时候,都是需要选择素材,那么如果一段素材长达几十分钟,那么该如何将视频进行分割,切成多个小片段,小编分享教程一起来看看吧. 第一步,运行软件[媒体梦工厂]在软件主界面中的七种功 ...
- java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众
本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标 ...
- c语言 拆分 文件,linux 将一个大文件分割成小的碎片文件 命令:csplit
csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件.碎片文件的命名类似"xx00","xx01".csplit命令是split ...
- php对视频分割,视频分割软件,将一个视频分割成多段小的视频,如何对视频进行剪切...
今天早上小编走在上班的路上,微风轻拂,树叶纷纷掉落,一片片泛黄的树叶,宛若落英一般纷飞,实在是美妙极了,正所谓一叶知秋,看着这满地落叶,小编不禁心想,是不是秋天快要到了.好了,不管秋天到不到,还是要继 ...
- ffmpeg 将视频分割为小段
目录 1. 先看一下分割结果 2. MAC安装ffmpeg 3. ffmpeg视频分割命令介绍 4.编写java程序 (1). 调用: (2). 视频分割的java工具类 5.参考: 1. 先看一下分 ...
- java传入一个字符串 将它分割成大写字符为首的字符串数组
/* * 传入一个字符串 将它分割成大写字符为首的字符串数组 */ private ArrayList<String> splitByUpperCase(Str ...
- Java将字符串按照指定长度分割成字符串数组
直接上代码: public class Test {/*** 将字符串按照指定长度分割成字符串数组** @param src* @param length* @return*/public stati ...
最新文章
- 【Android 安装包优化】WebP 应用 ( Android 中使用 libwebp.so 库解码 WebP 图片 )
- 高性能Javascript:高效的数据访问
- 排球计分程序(三)—— 模型类的设计与实现
- js 多个定时器_JS中的同步/异步编程
- linux中lvm的缩减
- 【JavaScript创建对象】
- 探索大神科比,30000多次投篮数据,有好玩的发现
- Ubuntu 18.04 语言学相关软件的安装
- Sublime Text 2 注册码/破解方法【蕃薯耀】
- 桌面壁纸被计算机管理员禁用,Win7更改桌面壁纸时出现“此功能已被禁用”如何解决...
- javascript监听页面刷新事件
- 我在淘宝帮别人写代码,月入10万!
- UOJ 180【UR #12】实验室外的攻防战
- 硬件测试的思考和改进:有道词典笔的高效测试探索
- 抖音,B站,小红书三大平台品牌投放特征与建议
- 把桌面路径设置到D盘
- 解决每次新建word都有页眉和页脚
- PostgreSQL 12 中文文档
- centos安装shutter
- On the Factory Floor: ML Engineering for Industrial-Scale Ads Recommendation Models笔记
热门文章
- 微型计算机性价比高吗,如何选购一台性价比高的微型计算?
- java 画爱心壮那首歌最,抖音貂蝉大招画爱心的背景音乐是什么_貂蝉大招画爱心的BGM歌曲介绍_咖绿茵手游站...
- NXP JN5169 JN-AN-1189-ZigBee-HA-Demo 使用UART0打印调试信息,UART1和其他设备收发数据
- magaface 人脸识别测试
- 计算机应用护理,护理专科-计算机应用在线练习2答案重点.doc
- 浪潮5280m4导轨安装_NF5280M4 – 导轨安装
- MYSQL函数 group_concat巨坑!!!
- android的亮屏幕的锁和键盘锁
- 机器学习 Maching Learning - 学习笔记 - 概括篇
- html设置行背景颜色