黑马程序员技术交流社区
标题:
关于MP3 格式文件合并的问题
[打印本页]
作者:
蔡增辉
时间:
2013-5-8 21:09
标题:
关于MP3 格式文件合并的问题
本帖最后由 蔡增辉 于 2013-5-9 11:29 编辑
写了个代码,想把两个独立的MP3文件合并为一个,结果合并得到的文件只能播放排在前面的那个MP3文件,后面的那个无法播放,求助大家帮忙看下;
import java.io.*;
import java.util.*;
public class MergeMp3Demo {
public static void main(String[] args) throws IOException{
Vector<InputStream> v=new Vector<InputStream>();
v.add(new FileInputStream("C:/Users/FC-JAVA/Desktop/tmp/1.mp3"));
v.add(new FileInputStream("C:/Users/FC-JAVA/Desktop/tmp/2.mp3"));
Enumeration<InputStream> en=v.elements();
SequenceInputStream sis =new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream("C:/Users/FC-JAVA/Desktop/tmp/merge.mp3");
byte[] by=new byte[1024];
int len=0;
while ((len=sis.read(by))!=-1){
fos.write(by,0,len);
}
sis.close();
fos.close();
}
}
追补:最终用不同播放器试了下,系统自带的播放器只能播放第一首,千千静听两首都可以播放,看来正如
Chelsea_Lampard
所说的是两首音乐之间衔接的问题;多谢各位的回答。
作者:
刘胜寒
时间:
2013-5-8 21:17
这个啊..... IO的合并流没这么强大...
后面的播放很正常了....
这个估计无解了...
除非使用音频处理软件能解决....
虽然两个都MP3文件,但是合并在一起某些东西,未必符合MP3底层的规范。才导致只能播放第一首的原因。
等高手给你解答吧?
楼主注意及时修改帖子分类,否则我会不厌其烦的提醒你的哦??{:soso_e113:}
作者:
Chelsea_Lampard
时间:
2013-5-9 10:38
代码没问题 ,是这样的:
每个MP3由两到三个部分构成:ID3v2标签+MP3声音+(ID3v1标签),后面一个不一定有。其中的标签就是MP3的各种信息,比如说歌曲名、演唱者、唱片封面什么的所以按你这种直接合并的方式,合并出来的就是:标签+MP3声音+标签+标签+MP3声音+标签自然中间就有一段没有声音了建议你参考标签格式,对于MP3文件进行处理,然后再合并就好了
id3官网:www.id3.org (英文的)
或者你可以直接搜索id3v2很多资料都可以用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2