代码之家  ›  专栏  ›  技术社区  ›  Björn

使用AS3通过Flash播放特定的MP3文件

  •  0
  • Björn  · 技术社区  · 15 年前

    我有一个MP3文件列表,我用*nix命令'cat'自动生成不同的、更大的MP3文件。它们可以在我测试过的任何MP3播放器中播放,但我也在ActionScript3中编写了一个小的、易于使用的MP3播放器,我想在网上播放我的(具体的)MP3文件。

    然而,Flash播放器似乎无法读取整个特定的文件——只能读取其中的第一部分(较大文件中包含的第一个较小的MP3文件)。我怎么解决这个问题?我希望能够用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 回复  |  直到 15 年前
        1
  •  1
  •   Branden Hall    15 年前

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

        2
  •  1
  •   bobince    15 年前

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

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