2

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

4

3 回答 3

1

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

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

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

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

(我不保证这个软件,这只是一个例子)

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

本质上,您必须构建一个包含已加载到电影中的修剪后的声音字节的数组。然后在 onEnterFrame 中,您必须在适当的时间调用它们:

(这段代码我完全没有测试,只是给大家一个基本的思路,lol)

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++;
}

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

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

于 2009-08-13T14:23:50.060 回答
1

要在 ActionScript 2 中混合声音,请查看此链接。详细解释了如何使用 AS2 实现混音。接下来,您需要查看此链接以获取有关该主题的更多信息。

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

或者您可以切换到 AS3,在其中您可以在运行时创建声音(例如,一直向下滚动)并将结果保存为字节流。

于 2009-08-14T03:53:01.480 回答
0

阅读一些关于 flash SoundChannelSoundSoundTransform类的信息。您所要做的就是加载不同的声音(您在我链接的 Flash 文档中有如何做到这一点的示例),并根据您的时间线播放声音。每种声音都可以在不同的通道上播放,这样您就可以“混合”它们。维护一系列频道,并在您需要的任何时间对它们做任何您想做的事情。

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

于 2009-08-13T13:55:33.627 回答