首先下载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分割成小段相关推荐

  1. 如何将音频分割成小段?

    如何将音频分割成小段?有时候我们需要将一个时间较长的音频文件进行分割,将它平均分割成几段,你知道如何操作吗?你可能会说用音频编辑软件,自己算好平均分割后音频的时间,然后再导出来,这种方法虽然也能完成操 ...

  2. 将视频分割成多段,并将视频中的音频进行单独保存

    很多朋友自己在剪辑视频的时候,如果一段素材长达几十分钟,那么该如何将视频进行分割,切成多个小片段,很多小伙伴不知道怎么操作,那么小编今天来分享教程一起来看看吧. 第一步,运行软件[媒体梦工厂]在软件主 ...

  3. 视频分割,自定义设置视频平均分割成几段的步骤

    很多朋友自己在剪辑视频的时候,都是需要选择素材,那么如果一段素材长达几十分钟,那么该如何将视频进行分割,切成多个小片段,小编分享教程一起来看看吧. 第一步,运行软件[媒体梦工厂]在软件主界面中的七种功 ...

  4. java利用数组随机抽取幸运观众_java利用数组随机抽取幸运观众

    本文实例为大家分享了java利用数组随机抽取幸运观众的具体代码,供大家参考,具体内容如下 思想: 首先将所有观众姓名生成数组,然后获取数组元素的总数量,再在数组元素中随机抽取元素的下标,根据元素的下标 ...

  5. c语言 拆分 文件,linux 将一个大文件分割成小的碎片文件 命令:csplit

    csplit命令用于将一个大文件分割成小的碎片,并且将分割后的每个碎片保存成一个文件.碎片文件的命名类似"xx00","xx01".csplit命令是split ...

  6. php对视频分割,视频分割软件,将一个视频分割成多段小的视频,如何对视频进行剪切...

    今天早上小编走在上班的路上,微风轻拂,树叶纷纷掉落,一片片泛黄的树叶,宛若落英一般纷飞,实在是美妙极了,正所谓一叶知秋,看着这满地落叶,小编不禁心想,是不是秋天快要到了.好了,不管秋天到不到,还是要继 ...

  7. ffmpeg 将视频分割为小段

    目录 1. 先看一下分割结果 2. MAC安装ffmpeg 3. ffmpeg视频分割命令介绍 4.编写java程序 (1). 调用: (2). 视频分割的java工具类 5.参考: 1. 先看一下分 ...

  8. java传入一个字符串 将它分割成大写字符为首的字符串数组

    /*      * 传入一个字符串 将它分割成大写字符为首的字符串数组      */     private ArrayList<String> splitByUpperCase(Str ...

  9. Java将字符串按照指定长度分割成字符串数组

    直接上代码: public class Test {/*** 将字符串按照指定长度分割成字符串数组** @param src* @param length* @return*/public stati ...

最新文章

  1. 【Android 安装包优化】WebP 应用 ( Android 中使用 libwebp.so 库解码 WebP 图片 )
  2. 高性能Javascript:高效的数据访问
  3. 排球计分程序(三)—— 模型类的设计与实现
  4. js 多个定时器_JS中的同步/异步编程
  5. linux中lvm的缩减
  6. 【JavaScript创建对象】
  7. 探索大神科比,30000多次投篮数据,有好玩的发现
  8. Ubuntu 18.04 语言学相关软件的安装
  9. Sublime Text 2 注册码/破解方法【蕃薯耀】
  10. 桌面壁纸被计算机管理员禁用,Win7更改桌面壁纸时出现“此功能已被禁用”如何解决...
  11. javascript监听页面刷新事件
  12. 我在淘宝帮别人写代码,月入10万!
  13. UOJ 180【UR #12】实验室外的攻防战
  14. 硬件测试的思考和改进:有道词典笔的高效测试探索
  15. 抖音,B站,小红书三大平台品牌投放特征与建议
  16. 把桌面路径设置到D盘
  17. 解决每次新建word都有页眉和页脚
  18. PostgreSQL 12 中文文档
  19. centos安装shutter
  20. On the Factory Floor: ML Engineering for Industrial-Scale Ads Recommendation Models笔记

热门文章

  1. 微型计算机性价比高吗,如何选购一台性价比高的微型计算?
  2. java 画爱心壮那首歌最,抖音貂蝉大招画爱心的背景音乐是什么_貂蝉大招画爱心的BGM歌曲介绍_咖绿茵手游站...
  3. NXP JN5169 JN-AN-1189-ZigBee-HA-Demo 使用UART0打印调试信息,UART1和其他设备收发数据
  4. magaface 人脸识别测试
  5. 计算机应用护理,护理专科-计算机应用在线练习2答案重点.doc
  6. 浪潮5280m4导轨安装_NF5280M4 – 导轨安装
  7. MYSQL函数 group_concat巨坑!!!
  8. android的亮屏幕的锁和键盘锁
  9. 机器学习 Maching Learning - 学习笔记 - 概括篇
  10. html设置行背景颜色