使用as3通过flash播放连接的mp3文件

时间:2009-08-22 23:46:52

标签: flash actionscript-3

我有一个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();
    }
...

2 个答案:

答案 0 :(得分:1)

我不相信你所做的结果是一个真正有效的mp3文件。此外,Flash对它可以播放的mp3非常挑剔。你最好的选择是单独加载文件,只是听听SoundChannel对象发出的SOUND_COMPLETE事件(当你运行声音的播放方法时,你会得到一个SoundChannel实例)。

答案 1 :(得分:1)

将不连续的MP3胶合在一起应该是有效的。但是,如果帧具有不同的基本编码设置(尤其是频率和频道/模式),许多媒体播放器将无法应对。

您还应该从文件中删除任何ID3标签(两个版本:从末端开始的ID3v1和从头开始的ID3v2),因为它们不是有效的MP3数据,并确保文件在帧边界上开始和结束。大多数玩家会跳过无效数据,寻找MP3同步字所指示的下一帧,但Flash可能会更挑剔,尤其是当它们意外地位于文件中间时。