黑马程序员技术交流社区
标题:
关于音乐文件切割后,用rar压缩改成后缀.mp3能播放。。
[打印本页]
作者:
唐秀启
时间:
2011-12-15 20:18
标题:
关于音乐文件切割后,用rar压缩改成后缀.mp3能播放。。
本帖最后由 benbenqi 于 2011-12-15 22:31 编辑
import java.io.*;
import java.util.*;
class SplitFile
{
public static void main(String[] args) throws IOException
{
splitFile();
}
public static void splitFile()throws IOException
{
FileInputStream fis = new FileInputStream("the easy way.mp3");
FileOutputStream fos = null;
byte[] buf = new byte[1024*1024];
int len = 0;
int count = 1;
while((len=fis.read(buf))!=-1)
{
fos = new FileOutputStream("the easy way"+(count++)+".part");
fos.write(buf,0,len);
fos.close();
}
fis.close();
}
}
复制代码
音乐文件用以上代码切割后,用rar压缩改成后缀.mp3能播放,但是少了1分钟,这该怎么解释?
为什么能播放?为什么会少一分钟?
额好像与java没多大关系,希望明白同学解释一下
源文件和rar压缩改成.mp3文件 点击下载 http://115.com/file/dn33lhb4
[fly]谢谢[/fly]
作者:
王柠
时间:
2011-12-15 20:35
会不会是在原文件的最后有一段空格呢
作者:
郝亚平
时间:
2011-12-15 21:30
理论上应该是不能播放的吧。Winrar的存档组织机制可是和Mp3文件的组织结构机制不同呀。
正常的mp3文件直接压缩成rar,再修改成mp3格式,也不应该能够正常播放的。因为Winrar在压缩的时候,向压缩结果文件写了文件头,使得Windows知道这个东西是压缩文档。这个类似于Windows中的exe文件都有PE文件头,而且16位,32位,64位的机子,exe文件的pe文件头不一样的。所以,16位exe在32位机子上面无法运行,32位程序在64位机子上面无法运行,Windows提出无法运行原因,在于判断exe的pe文件头。
me用了qq影音播放rar压缩后的mp3文件。提示:无法渲染。说明这个MP3文件不正常,不符合mp3的正常编码机制。不能播放呀。
如果某个播放器能够播放,说明其纠错能力强大,忽略了rar添加的文件头的东东,发现部分数据流,丢失部分数据流。
猜测一下,期待更好答案。
作者:
唐秀启
时间:
2011-12-15 21:43
郝亚平 发表于 2011-12-15 21:30
理论上应该是不能播放的吧。Winrar的存档组织机制可是和Mp3文件的组织结构机制不同呀。
正常的mp3文件直接 ...
谢谢 我用了千千 酷狗 qq音乐 windows media potplayer 这几个播放器只有千千 酷狗能播放。看样真的与解码有关,可能这两个的解码比较强。但是直接压缩mp3格式音乐再改成.mp3用这两个播放器不能播
作者:
程传鹏
时间:
2011-12-16 08:29
郝亚平 发表于 2011-12-15 21:30
理论上应该是不能播放的吧。Winrar的存档组织机制可是和Mp3文件的组织结构机制不同呀。
正常的mp3文件直接 ...
这个技术含量高~~~~~
作者:
王冀
时间:
2011-12-16 10:33
貌似有些播放器很高级,可以播放压缩文件中的东西。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2