通过读取音频频谱信息,实时绘制声音频谱图像,可以是矩阵型或者波浪形,下面一起都来看看吧,演示效果见底部flash…

设计思路:加载外部音频,通过mixer将声音信息转化成数据信息存储于字节数组,最终读取并将数据信息转化为单精度浮点数,实时绘制矩形,以代表音频高低//

参考代码: package{

package {
import flash.display.Sprite;//导入基本显示列表构造块类
import flash.display.Graphics;  //创建矢量形状
import flash.media.Sound;  //允许您在应用程序中使用声音
import flash.media.SoundChannel;  //控制应用程序中的声音
import flash.media.SoundMixer;  //全局声音控件的静态属性和方法
import flash.net.URLRequest;  //可捕获单个 HTTP 请求中的所有信息
import flash.events.Event;//创建 Event 对象的基类
import flash.utils.ByteArray;//类提供用于优化读取、写入以及处理二进制数据的方法和属性
public class wave extends Sprite {
private var sound:Sound; //初始化所需变量
private var ba:ByteArray;
private var num:Number;
private var sound_channel:SoundChannel;
private var t:Number=0;
//构造wave函数
public function wave():void {
sound=new Sound() ;
ba=new ByteArray() ;
sound.load(new URLRequest(“at times.mp3”));
sound_channel=sound.play();
this.addEventListener(Event.ENTER_FRAME,boxingtiaodong);   //添加事件帧听
}
//boxingtiaodong函数
private function boxingtiaodong(event:Event) {
graphics.clear();
drawFunction(2,0xc0ff00);
}
//drawFunction函数
private function drawFunction(chuxi:Number,color:Number) {
graphics.lineStyle(chuxi,color,100);
SoundMixer.computeSpectrum(ba,false,0); //获取音谱信息
for (var i=30; i <= stage.stageWidth – 30; i++) {   //绘制声波曲线
num=ba.readFloat() * 360;
if (i > 30) {
var fi=stage.stageHeight / 2 + num;
graphics.lineTo(i,fi);
} else {
graphics.moveTo(30,stage.stageHeight / 2 + num);
}
}
}
}
}

    博视界科技专注于沉浸式全景数字餐厅、全息酒店宴会厅,旨在帮传统餐饮用科技玩跨界,欢迎咨询!

官方网站:www.boseetech.com

联系方式:    

关注我们:


    【声明】转载本文请注明出处三人行设计,并保留有效链接:flash as3实例纯代码制作声音频谱 http://www.srxtuan.com/archives/1391,谢谢!