- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
早上好!
我正在尝试为 MP3 创建可视波形。我包含的代码在成功加载 MP3 时调用。我打算只从声音中提取几个重要的样本来创建波形,而不是将整个声音提取到字节数组中。即使在一台好的机器上,提取整首歌曲也会导致 flash 卡住 3-5 秒(或更长时间!)。就我而言,这是不可行的。
不幸的是,我下面的代码无法产生任何数字。如果我提取整首歌曲它会起作用,但仅提取关键点对我没有任何帮助。执行提取是否会使声音对象的其余部分对将来的提取无效?如果是这样,有没有办法解决这个问题,在提取过程中不会长时间卡住闪光?
其余代码中的一些重要变量:
waveFormWidth:波形 Sprite 的静态宽度。
waveFormHeight:波形 Sprite 的静态高度。
歌曲:我将用来创建波形的声音对象。
public function mapWaveForm(e:Event = null):void
{
// Clear the wave form sprite
waveForm.graphics.clear();
waveForm.graphics.lineStyle(0, 0x000000, 1);
// Storage for the wave form bit data
var byteOutput:ByteArray;
var leftPeakSize:Number;
var rightPeakSize:Number;
var songTotalSamples:int;
var thisSample:int;
byteOutput = new ByteArray();
// How many samples?
songTotalSamples = (song.length * 44.1);
// Loop for the wave form width
for (var peakCount:int = 0; (peakCount < waveFormWidth); peakCount++)
{
// Get info at each peak.
thisSample = Math.floor(songTotalSamples * (peakCount / waveFormWidth));
song.extract(byteOutput, 1, thisSample);
byteOutput.position = 0;
trace(thisSample, byteOutput.readFloat());
leftPeakSize = byteOutput.readFloat() / 1.27;
rightPeakSize = byteOutput.readFloat() / 1.27;
// Turn those peaks into something usable.
leftPeakSize = leftPeakSize * (waveFormHeight * .5);
rightPeakSize = rightPeakSize * (waveFormHeight * .5);
// Make the left channel line
waveForm.graphics.moveTo(peakCount, (waveFormHeight * .5));
waveForm.graphics.lineTo(peakCount, (waveFormHeight * .5) - leftPeakSize);
// Make the right channel line
waveForm.graphics.moveTo(peakCount, (waveFormHeight * .5));
waveForm.graphics.lineTo(peakCount, (waveFormHeight * .5) + rightPeakSize);
}
}
最佳答案
对于它的值(value),我只是在做完全相同的事情,经过一些研究,我才开始工作。我似乎无法让它与 WAV 文件一起使用,但这与所有类型的 MP3 文件兼容。这就是我最终的结果:
var IMAGE_SIZE:int = new int(600); // Final width of image
var IMAGE_DEPTH:int = new int(5); // How many passes per pixel of image
var RESOLUTION:int = new int(IMAGE_SIZE * IMAGE_DEPTH);
var DRAW_AMPLITUDE:int = new int(150); // pixel height of max volume line
var waveForm:Shape = new Shape();
var mp3File:Sound = new Sound();
mp3File.load(new URLRequest("audio.mp3"));
mp3File.addEventListener(Event.COMPLETE, parseSound);
function parseSound(e:Event):void {
var soundBytes:ByteArray = new ByteArray();
for (var i:int=0; i<RESOLUTION; i++) {
mp3File.extract(soundBytes, 1, Math.floor((mp3File.length*44.1)*(i/RESOLUTION)));
soundBytes.position = 0;
while (soundBytes.bytesAvailable > 0) {
var tmpNum:Number = new Number();
tmpNum += soundBytes.readFloat();
}
drawWave(i, tmpNum);
soundBytes.clear();
}
this.addChild(waveForm);
trace("--DONE--");
}
function drawWave(i:Number, amp:Number):void {
var pixX:Number = new Number(Math.floor(i/IMAGE_DEPTH));
var pixY:Number = new Number((amp*DRAW_AMPLITUDE)/2);
waveForm.graphics.lineStyle(1, 0x0, (1.2/IMAGE_DEPTH));
waveForm.graphics.moveTo(pixX, ((DRAW_AMPLITUDE/2)-pixY));
waveForm.graphics.lineTo(pixX, ((DRAW_AMPLITUDE/2)+pixY));
}
关于flash - AS3 sound.extract() 用于波形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6168056/
我正在尝试实现一系列音频文件,这些文件是三星语音记录功能的一部分。 像这样 enter image description here 但是,没有显示实时频谱的信息,但是没有显示上传的音频文件的波形的信
希望从输入中获取特定金色#ad9557(173/255、149/255、87/255)的波形,并具有透明背景/或黑色(如果不可能)。 我目前正在使用此脚本来生成它: command = new Str
这个问题是关于用于回答 this 的代码的线。我使用的是 Nicholas DiPiazza 发布的代码,后来是 Andrew Thompson 的变体。我在这段代码中添加了第二个 AudioWave
这就是我要达到的结果 这是我所做的:https://codepen.io/demedos/pen/gjQNOM HTML 结构: .container .header .page-1
我想在未来用 C# .NET 4.0 中的音频做一些项目,所以我收集了一些用于录音、处理 WAVE 文件等的代码示例。但我没能找到的是: 如何实时(ish)绘制音频波形/频谱图?显然,创建内存位图并将
我已经搜索了很多东西,但是找不到我想要的东西。 有没有办法从一个非常短的音频文件(在我的情况下为1秒mp3)生成简化或平坦的声波图像? 简化可能是错误的术语,但是我的意思是我想要这种输出: 而不是这样
我在使用 MS-s 波形 API 的程序中遇到某种链接错误。我正在使用的代码可以在这里找到:http://www.planet-source-code.com/vb/scripts/ShowCode.
我正在使用 Android 2.3.1 上的 Visualizer 类进行一些音乐分析。我发现 FFT 和波形幅度受设备体积的影响。这意味着,如果用户调低音量,我会收到很少或收不到 FFT 数据。 我
我有两张 png,一张白色,一张红色。 当歌曲不播放时,它应该是白色的,当歌曲播放时,它应该随着歌曲的进行而填充红色,并且当分别向后和向前滑动时,它应该填充红色。 我已经能
像soundcloud和zippyshare1,如何用java生成音频波形图?是否有任何框架或开源库可用于这种情况? 我想生成一个音频波形作为图像,加载轨道后,将加载波形图像。 最佳答案 以 this
是否有一种仅 Java 的方法可以在 JScrollPane 中显示更大的图片?我不想重新发明轮子,而且我已经在 JLabel 技巧中使用 ImageIcon 来显示 32768x400 图像而苦
是否有(某处)用于 Windows 的命令行程序,可以从 MP3/WAV 创建 PNG/JPEG 视觉效果? 编辑: 这是图像应该是什么样子的一个很好的例子。 最佳答案 Sox ,“音频处理的瑞士军刀
我正在开发一个 WebGL 应用程序,它使用来自 soundcloud API 的数据。 我正在尝试使用 ThreeJS 将轨道图稿和波形 PNG 加载到纹理中以放入 Sprite 上。 但是我在 c
我是一名优秀的程序员,十分优秀!