我将AS3音乐播放器内置到我正在整理的应用中。它几乎与我使用过的每个文件完美配合,但有一个文件可以提前停止。该文件大约56秒,玩家停止约44秒。我正在使用trace来显示长度,而对于每首其他歌曲,长度都是正确的。在这种情况下,trace显示大约44秒而不是56.这是我用来加载文件的代码:
length = 0;
request = new URLRequest(fileAddress);
track = new Sound();
track.load(request);
track.addEventListener(Event.COMPLETE, TrackLoaded);
这是TrackLoaded功能:
private function TrackLoaded(e:Event):void{
length = track.length;
if (playWhenLoaded == true){
trackChannel = track.play(0);
trackChannel.addEventListener(Event.SOUND_COMPLETE, TrackFinishedPlaying);
playWhenLoaded = false;
}
与其他所有文件完美配合。我错过了什么?
答案 0 :(得分:0)
你是否愿意在某处下载这款56秒的MP3进行下载?分析?或者,如果您可以通过Hexeditor检查标题信息。我怀疑有两件事:
1)标题嵌入了不正确的时间长度,Flash将其作为最终持续时间并停在那里。毕竟为什么还要读剩余的字节?它们可能只是元数据而不是音频样本除了编码器会说真正的持续时间?因此,即使你的耳朵知道它不正确,它也被接受为最终持续时间。
2)MP3采样率/比特率问题:考虑这个问题MP3的采样率是多少?检查工作MP3的采样率。这些各种发现的声音还是你自己制作的?我要求确认你为每个文件设置相同的设置但是这个设置不起作用?
在任何情况下,我认为你可以通过重新编码来解决这个特定的MP3。也许首先保存为WAV或AIFF,然后将新的未压缩音频转换回MP3,采样率为44100 khz +立体声+恒定比特率(如果你不想要问题,可以避免变量B.Rate就像地狱一样)
检查并修复上述任何一项都应该能够正确解析MP3。希望它有所帮助