我有一个mp3文件列表,我使用* nix命令'cat'自动一起构建到不同的,更大的mp3文件。它们可以在我测试过的任何已安装的MP3播放器中正常播放,但我还在ActionScript 3中编写了一个易于使用的小型MP3播放器,我想通过网络播放我的(连接的)mp3文件。
然而,Flash Player似乎无法读取整个连接文件 - 只有它们的第一部分(较大文件中包含的第一个较小的mp3文件)。我该如何解决这个问题?我希望能够使用ActionScript解决这个问题,而不是以任何其他方式创建连接文件。
我的ActionScript看起来与此类似;
...
private function loadTrackAndPlay():void {
track = new Sound();
track.addEventListener(Event.COMPLETE, playTrack);
var req:URLRequest = new URLRequest('concatinated.mp3');
track.load(req);
}
private function playTrack(e:Event):void {
track.removeEventListener(Event.COMPLETE, playTrack);
track.play();
}
...
答案 0 :(得分:1)
我不相信你所做的结果是一个真正有效的mp3文件。此外,Flash对它可以播放的mp3非常挑剔。你最好的选择是单独加载文件,只是听听SoundChannel对象发出的SOUND_COMPLETE事件(当你运行声音的播放方法时,你会得到一个SoundChannel实例)。
答案 1 :(得分:1)
将不连续的MP3胶合在一起应该是有效的。但是,如果帧具有不同的基本编码设置(尤其是频率和频道/模式),许多媒体播放器将无法应对。
您还应该从文件中删除任何ID3标签(两个版本:从末端开始的ID3v1和从头开始的ID3v2),因为它们不是有效的MP3数据,并确保文件在帧边界上开始和结束。大多数玩家会跳过无效数据,寻找MP3同步字所指示的下一帧,但Flash可能会更挑剔,尤其是当它们意外地位于文件中间时。