首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Flash中创建音乐播放器来创建音频文件的波形?

如何在Flash中创建音乐播放器来创建音频文件的波形?
EN

Stack Overflow用户
提问于 2010-01-17 02:50:00
回答 5查看 4.4K关注 0票数 0

我有下面三个截图,基于Flash的音频播放器在不同的网站上,绘制了它将要播放的剪辑的波形,并在播放时沿着它移动,还允许用户在音频文件上单击一个点,它就会跳到那个点。

DJ从http://www.djdownload.com下载音乐播放器

DJ Download Music Player http://img13.imageshack.us/img13/6739/djdownloadmusicplayer.png

来自http://www.soundcloud.com的SoundCloud音乐播放器

SoundCloud Music Player http://img5.imageshack.us/img5/6336/soundcloudmusicplayer.png

来自http://www.trackitdown.net的TrackItDown音乐播放器

TrackItDown Music Player http://img697.imageshack.us/img697/7392/trackitdownmusicplayer.png

我有很少的Flash知识,但这很容易实现吗?我只想展示闪存文件的mp3和它绘制的波形。我知道这在CPU上可能是相当密集的,所以有没有一种方法可以缓存波形数据,这样它就不会在每次加载文件时都重新绘制?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-17 03:40:36

我以前从来没有这样做过,但据我所知,情况如下。

如果你使用的是Flash Player10,那你就走运了,否则你就得计算声音播放时的频谱了。就像在Chris的链接中一样,您可以使用Sound.extract()将声音对象中的声音数据放入ByteArray (仅限FP10)。然后查看ByteArray,读取值,并根据值在屏幕上绘制一些内容。

在FP9上,你必须在SoundChannel上播放声音,并在播放时读取通道的左右峰值。我找到了这个示例代码(link)

代码语言:javascript
运行
复制
var snd:Sound = new Sound();
var req:URLRequest = new URLRequest("your track url");
var channel:SoundChannel;
var bytes:ByteArray = new ByteArray();

snd.load(req);
this.addEventListener(Event.ENTER_FRAME, enterFrameEvent);
channel = snd.play(0,3);    

function enterFrameEvent(event:Event):void  {
    SoundMixer.computeSpectrum(bytes, true,0);
    // bytes has 512 values 0-255 leftchannel 256-512 right channel
    for (var i:Number = 0; i < 256; i++) {
        val = bytes.readFloat();
    }
}

因此,简而言之,试着坚持使用FP10,如果您能够做到这一点(没有客户端限制),您应该能够将Waveform类直接从Chris的链接中删除并使用它。看起来这个类还绘制了实际的波形(在提取音频数据的基础上),但您可以将绘制移动到它自己的类中,或者修改代码以获得您自己的波形外观。

票数 3
EN

Stack Overflow用户

发布于 2010-01-17 03:00:14

我还没有尝试过,但是在谷歌上搜索"as3波形“就会发现这篇博客文章(包含一些源代码的链接)

http://blog.efnx.com/flash-actionscript-3-waveform-generation-class/

票数 0
EN

Stack Overflow用户

发布于 2010-01-17 03:02:44

这个Flashkit公告板条目还提供了许多非常有趣的资源:

  • http://board.flashkit.com/board/showthread.php?t=653792
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2078545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档