在闪光灯中混合多个声音

时间:2009-08-10 11:35:07

标签: flash audio actionscript-2 mixing

我在闪光灯中有几个声音对象,我想在这些声音文件中混合不同的点来创建单个杰作并将其保存为mp3。 我在网上看过各种“混音器”应用程序,想知道自己要看哪个区域才能做到这一点。

3 个答案:

答案 0 :(得分:1)

要创建音乐或您要创建的任何内容,您必须将wav和mp3文件导入到库中,然后将它们拖到影片区域以将其添加到时间轴中。使用多个图层来帮助组织它们。要测试你的歌曲你可以按Enter键从你前进到结尾的任何帧运行。

如果您在时间轴中选择了声音,请不要忘记您可以应用一些效果。此外,“属性”面板上的“编辑”按钮(默认情况下位于底部)可用于将音频剪辑修剪为您需要的任何内容。

完成后,您必须将flash电影发布到swf。然后你将不得不使用像这样的Swf到Mp3转换器:

http://3d2f.com/programs/25-187-swf-to-mp3-converter-download.shtml

(我不担心这个软件,这只是一个例子)

如果您尝试使用ActionScript 2.0从代码中完成所有这些操作,那么您将面临艰难的前进道路。

基本上,您必须构建一个充满修剪过的声音字节的数组,并将其加载到电影中。然后在onEnterFrame中,您必须在适当的时间调用它们:

(我根本没有测试这个代码,只是为了给你一个基本的想法,哈哈)

var sounds = new Array();
var s0 = new Sound(this);
s0.attachSound("someLinkedSound0");
sounds.push({sound : s0, frame : 100});
var s1 = new Sound(this);
s1.attachSound("someLinkedSound1");
sounds.push({sound : s1, frame : 200});
var s2 = new Sound(this);
s2.attachSound("someLinkedSound2");
sounds.push({sound : s2, frame : 300});
var currentSound = 0;

this.onEnterFrame = function(e) {
    if(currentSound < sounds.length && sounds[currentSound].frame == _root.currentFrame) {
        sounds[currentSound].start(0,1);
        currentSound++;
    }
    frame++;
}

我的示例使用导入到您的库并“链接”的声音,但您可以通过网址加载声音,只需稍加修改。

如果由于您的应用程序的结构onEnterFrame未被调用,您也可以使用从setInterval调用的方法来完成类似的操作。 我希望有所帮助。

答案 1 :(得分:1)

对于在ActionScript 2中混合声音,请查看this link。这是如何与AS2实现声音混合的精细解释。接下来,您需要查看this link以获取有关该主题的更多信息。

直接从AS2无法将MP3的混音版本保存为MP3。您必须使用一些精心设计的服务器端脚本,该脚本知道混合声音何时启动和停止,并且该信息可以在服务器上生成MP3。棘手,但并非不可能。

或者您可以切换到AS3,您可以create sound at runtime(向下滚动以获取示例)并将结果保存为字节流。

答案 2 :(得分:0)

了解有关Flash SoundChannelSoundSoundTransform类的信息。你所要做的就是加载不同的声音(你有关于如何在我链接的flash文档中做到这一点的例子),并根据你的时间线播放声音。每种声音都可以在不同的频道播放,通过这种方式你可以“混合”它们。保持一系列渠道,并随时随地为他们做任何事情。

要保存它们还有一些工作要做,但并非不可能。 Here你可以找到另一个将mp3保存到swf中的例子。其他方法我不能说我知道但是从我所看到的,你可以使用Alchemy并将LAME MP3 Encoder编译为flash库。您还需要一些后端,因为您无法使用闪存下载文件。您必须将它们发送到服务器,然后服务器应该初始化下载。