2009-08-22 48 views
0

我有一個mp3文件的列表,我可以用* nix命令'cat'自動將它們一起構建到不同的,更大的mp3文件中。他們可以在我已經測試過的任何已安裝的MP3播放器中播放,但我還在ActionScript 3中編寫了一個小型,易於使用的MP3播放器,我想通過網絡播放我的(concatinated)mp3文件。通過Flash與as3播放concatinated mp3文件

但是,Flash Player似乎無法讀取整個concatinated文件 - 只有它們的第一部分(較大的文件中包含的第一個較小的mp3文件)。我該如何解決這個問題?我希望能夠用ActionScript解決這個問題,而不是以任何其他方式創建concatinated文件。

我的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(); 
    } 
... 

回答

1

我不相信你正在做的是一個實際有效的MP3文件的結果。另外,Flash對它可以播放的mp3非常挑剔。您最好的選擇是單獨加載文件,並且只是偵聽SoundChannel對象發出的SOUND_COMPLETE事件(當您運行聲音的播放方法時,您會得到SoundChannel的實例)。

+0

這是要走的路(不幸),感謝您的輸入。 – 2009-08-23 15:39:36

1

將離散的MP3幀粘合在一起應該是有效的。然而,如果幀具有不同的基本編碼設置(特別是頻率和頻道/模式),許多媒體播放器將無法應對。

您還應該從文件(兩個版本:ID3v1和ID3v2)中刪除任何ID3標籤,因爲這些文件不是有效的MP3數據,並且確保這些文件在幀邊界上開始和結束。大多數玩家會跳過查找MP3同步字指示的下一幀的無效數據,但Flash可能更挑剔,尤其是當它們意外地位於文件中間時。

+0

感謝您的輸入!雖然沒有工作,我嘗試了不同的MP3,沒有ID3的信息,但沒有運氣。必須單獨閱讀文件。 – 2009-08-23 15:40:19