0

就像标题中所说的那样,我正在尝试为我的网站制作 mp3 播放器,但遇到了一些麻烦。我的代码看起来像这样(它处于测试和开发阶段,所以,尽量不要关注开发阶段的事情)......

import flash.events.MouseEvent;
import flash.media.Sound;
import flash.net.URLRequest;
import flash.media.SoundChannel;

// First run
if (songPlaying == undefined) {
    var songPlaying = '0';
    var songPause = '0';
    var songLoadingCompleted = '1';
    var prevSongURL:Array;
    var currentSongURL:Array;
    var nextSongURL:Array;
    var soundFile:URLRequest;
    var currentSong:Sound;
    var channel:SoundChannel;
    currentSongURL = ['','',''];
    trace("Player defaults loaded.");
}

// Testing vars
nextSongURL = ['1','NEXT','http://www.balkanize.me/dll/dl5/Sasa_Kovacevic_Slucajno.mp3'];
prevSongURL = ['3','PREV','http://tm-alonso.perso.sfr.fr/Musique/NRJ%20Music%20Awards%202012/CD1/06%20-%20Pitbull%20feat.%20Chris%20Brown%20-%20International%20Love.mp3'];
//soundFile = new URLRequest(lastPlayedSongURL[2]);
//currentSong = new Sound();
//channel = new SoundChannel();
trace("Testing values loaded.");

//JS communication
//Get next next file
function getNextSong(lastPlayed:Array) {
    //NOT FINISHED
    trace("Loading next track");
    return nextSongURL;
}

//Get previous next file
function getPrevSong(lastPlayed:Array){
    //NOT FINISHED
    trace("Loading prev track");
    return prevSongURL;
}

//FUNCTIONS
function songLoadingProgress(evt:ProgressEvent):void{ 
    var loadedPct:uint = Math.round(100 * (evt.bytesLoaded / evt.bytesTotal)); 
    trace("The sound is " + loadedPct + "% loaded.");
}

function songLoadingComplete(evt:Event):void{
    trace("The sound is completely loaded.");
    songLoadingCompleted = '1';
}

function onIOError(evt:IOErrorEvent){ 
    trace("The sound could not be loaded: " + evt.text); 
}



// Player controls
function playSong(evt:MouseEvent):void {
    if (songPlaying !== '1') {
        info.text = "PLAY!";
        if (currentSongURL[2] == '') {
            currentSongURL = getNextSong(currentSongURL);
        }
        trace("Trying to play:" + currentSongURL[0] + " - " + currentSongURL[1] + " - " + currentSongURL[2]);
        if (songLoadingCompleted !== '1') {
            currentSong.close();
            currentSong = new Sound();
        }
        songLoadingCompleted = '0';
        soundFile = new URLRequest(currentSongURL[2]);
        currentSong = new Sound();
        channel = new SoundChannel();
        currentSong.load(soundFile);
        channel = currentSong.play(songPause);
        currentSong.addEventListener(ProgressEvent.PROGRESS, songLoadingProgress);
        currentSong.addEventListener(Event.COMPLETE, songLoadingComplete); 
        currentSong.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
        //channel.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);
        songPlaying = '1';
        songPause = '0';
    }
}

function stopSong(evt:MouseEvent):void {
    if (songPlaying !== '0') {
        trace('STOP!');
        songPause = '0';
        songPlaying = '0';
        channel.stop();
        return;
    }
}

function playNext(evt:MouseEvent):void {
    if (songPlaying !== '0') {
        trace('STOP!');
        songPlaying = '0';
        channel.stop();
    }
    currentSongURL = getNextSong(currentSongURL);
    playSong(null);
}

function playPrev(evt:MouseEvent):void {
    if (songPlaying !== '0') {
        trace('STOP!');
        songPlaying = '0';
        channel.stop();
    }
    currentSongURL = getPrevSong(currentSongURL);
    playSong(null);
}



btnPrev.addEventListener(MouseEvent.CLICK,playPrev);
btnPlay.addEventListener(MouseEvent.CLICK,playSong);
// btnPause.addEventListener(MouseEvent.CLICK,pauseSong);
btnStop.addEventListener(MouseEvent.CLICK,stopSong);
btnNext.addEventListener(MouseEvent.CLICK,playNext);

问题是我的网络浏览器以及其他一些 Flash mp3 播放器可以打开“ http://www.balkanize.me/dll/dl5/Sasa_Kovacevic_Slucajno.mp3 ”,而我的播放器不能。但是,其他文件,' http://tm-alonso.perso.sfr.fr/Musique/NRJ%20Music%20Awards%202012/CD1/06%20-%20Pitbull%20feat.%20Chris%20Brown%20-%20International %20Love.mp3 ',可以打开,播放,重播,随便什么。

我注意到我无法打开的文件有一些不同的标题(它没有内容长度标题)。但是,我再次尝试使用其他一些没有内容长度标头的文件,并且可以打开它。

我不确定我知道我错在哪里...... :D 帮助,并在此先感谢!:)

苏珊

4

1 回答 1

0

听起来这绝对是您的 MP3 编码的问题,而不是您的 AS3 代码的问题。.mp3只是用于保存文件的包装器 - 有许多、无数、不同的方法来编码.mp3文件中的实际内容。

这些编码中的一些在 Flash 中可能是友好的,有些可能不是。.mp3您应该使用 iTunes、Audacity、VLC 媒体播放器、HandBrake 或其他软件重新导出(或“挤压”)所有非工作文件。我推荐Adobe Media Encoder

于 2013-07-30T13:06:45.847 回答