package com.stevezong.mp3palyer;
import org.jaudiotagger.audio.mp3.MP3AudioHeader;
import org.jaudiotagger.audio.mp3.MP3File;
import java.io.File;
import java.io.RandomAccessFile;
public class Mp3Cut {
public static void main(String[] args) throws Exception {
//预备开始截取的时间
long beginTime = 74 *1000;
//截取结算时间
long endTime = 93 * 1000;
//原mp3文件
File mSourceMp3File = new File("E:\\20171222\\3.mp3");
MP3File mp3 = new MP3File(mSourceMp3File);
MP3AudioHeader header = (MP3AudioHeader) mp3.getAudioHeader();
long bitRateKbps = header.getBitRateAsNumber();
// 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);
//目标文件
File dFile = new File("e:\\20171222\\6.mp3");
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);
}
System.out.println(endByte - beginByte);
//跳转到指定的位置
sRaf.seek(beginByte);
//开始写入 mp3实体
for(long i = 0; i<= endByte-beginByte ;i++){
int m = sRaf.read();
System.out.println(m);
if((m - 50) > 0){
dRaf.write(m- 5);
}else{
dRaf.write(m);
}
}
sRaf.close();
dRaf.close();
}
}
jaudiotagger 切割mp3文件
最新推荐文章于 2024-11-09 17:15:55 发布
本文介绍如何使用Java和Jaudiotagger库,通过MP3AudioHeader解析,截取并保存3.mp3文件的一个74-93秒片段,生成新的6.mp3文件,展示了从读取头文件到定位并写入目标文件的详细过程。
摘要由CSDN通过智能技术生成