Flash播放器可以从网址播放.wav文件吗?

时间:2009-03-20 22:06:43

标签: flash

假设我在网址上有一个wav文件:

http://hostname.com/mysound.wav

我正在尝试使用声音类加载wav文件,如:

var url:String = "http://hostname.com/test.wav";
var urlRequest:URLRequest = new URLRequest(url);
var sound:Sound = new Sound();
sound.load(urlRequest);
sound.play();

但是,这似乎不起作用。 Flash播放器可以播放wav文件,还是只是mp3?

5 个答案:

答案 0 :(得分:13)

答案 1 :(得分:9)

这是一个简单的类,用于使用开源popforge库从flash中的url加载和播放wav文件:http://code.google.com/p/popforge/

喝彩!

    public class WavURLPlayer
     {


      public static function PlayWavFromURL(wavurl:String):void
      {
       var urlLoader:URLLoader = new URLLoader();
        urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
        urlLoader.addEventListener(Event.COMPLETE, onLoaderComplete);
        urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onLoaderIOError);

       var urlRequest:URLRequest = new URLRequest(wavurl);

       urlLoader.load(urlRequest);
      }

      private static function onLoaderComplete(e:Event):void
      {
       var urlLoader:URLLoader = e.target as URLLoader;
        urlLoader.removeEventListener(Event.COMPLETE, onLoaderComplete);
        urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, onLoaderIOError);

       var wavformat:WavFormat = WavFormat.decode(urlLoader.data);

       SoundFactory.fromArray(wavformat.samples, wavformat.channels, wavformat.bits, wavformat.rate, onSoundFactoryComplete);
      }

      private static function onLoaderIOError(e:IOErrorEvent):void
      {
       var urlLoader:URLLoader = e.target as URLLoader;
        urlLoader.removeEventListener(Event.COMPLETE, onLoaderComplete);
        urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, onLoaderIOError);

       trace("error loading sound");

      }

      private static function onSoundFactoryComplete(sound:Sound):void
      {
       sound.play();
      }


 }

答案 2 :(得分:5)

由于ByteArray,你可以直接进行解决方法; )

检查一下:

http://richapps.de/?p=97

  

编辑:

     

之前的链接有点旧我   估计你也应该看看   安德烈和乔的神话般的 PopForge   图书馆。实际上有一个wav   那里的解码器课程。

     

http://code.google.com/p/popforge/source/browse/#svn/trunk/flash/PopforgeLibrary/src/de/popforge/format/wav

答案 3 :(得分:2)

是的,你可以。我制作了Wav / Au Flash播放器,它可以播放流wav,以G.711或PCM编码,可以任意比特长度和采样率。 根据GPLv2许可,在此处:http://blog.datacompboy.ru/2009/10/15/wav-au-flash-player/

答案 4 :(得分:0)

Flash本身不支持播放.wav文件。 Flash / Flex Builder将其直接编译为可以在脚本中播放的Sound对象,但对于外部.wav声音,Flash SDK将无法帮助您。

您需要自己阅读.wav数据并进行Flash播放,或者:有几个第三方库可以为您执行此操作。上面的帖子使用了popforge,这里的教程演示了as3wavsound从URL播放外部.wav文件:

http://active.tutsplus.com/tutorials/media/quick-tip-play-external-wav-files-in-as3/