代码之家  ›  专栏  ›  技术社区  ›  Irwin

在闪光灯中混合多个声音

  •  2
  • Irwin  · 技术社区  · 15 年前

    我在Flash中有几个声音对象,我想在这些声音文件中混合不同的点,以创建一个杰作并将其保存为MP3。 我已经在网上看到了各种“混音器”应用程序,我想知道自己需要关注哪些领域才能做到这一点。

    3 回复  |  直到 12 年前
        1
  •  1
  •   Ben Lesh    12 年前

    要创建音乐或任何您试图创建的内容,您必须将wav和mp3文件导入到库中,并将它们拖到电影区域,以将它们添加到时间线中。使用多个层来帮助组织它们。要测试你的歌曲,你可以按回车键,从你的任何帧上向前跑到底。

    别忘了,如果你在时间轴中选择了声音,你可以应用一些效果。此外,在属性面板上有一个“编辑”按钮(默认情况下在底部),您可以使用它来将音频剪辑修剪到您需要的任何位置。

    一旦你完成了,你将不得不发布你的Flash电影到一个SWF。然后你必须使用一个SWF-MP3转换器,就像这样:

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

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

    如果你试图用ActionScript2.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加载声音,只需稍加修改。

    如果由于应用程序的结构,没有调用OnInterframe,也可以使用从setInterval调用的方法完成类似的工作。 希望有帮助。

        2
  •  1
  •   Luke    15 年前

    对于ActionScript 2中的混音,请看一下 this link . 这是如何与AS2实现声音混合的详细说明。接下来你需要结账离开 this link 了解更多关于这个主题的信息。

    将混合版本的声音保存为MP3是不可能直接从AS2中实现的。你必须使用一些精细的服务器端脚本,知道什么时候开始和停止混合的声音,利用这些信息可以在服务器上生成MP3。很棘手,但并非不可能。

    或者你可以切换到AS3 create sound at runtime (例如,一直向下滚动)并将结果保存为字节流。

        3
  •  0
  •   TheBrain    15 年前

    读一点关于flash的内容 SoundChannel , Sound SoundTransform 班级。你所要做的就是加载不同的声音(在我链接的flash文档中,你有一些关于如何做的例子),然后根据你的时间表播放声音。每个声音都可以在不同的频道播放,通过这个你可以“混合”它们。保持一系列的通道,在需要的时候用它们做任何你想做的事情。

    拯救他们需要做更多的工作,但并非不可能。 Here 您可以找到另一个将MP3保存到SWF中的示例。其他的方法我不能说我知道,但是根据我所看到的,你可以使用炼金术和编译 LAME MP3 Encoder 作为闪存库。您还需要一点后端,因为您不能使用Flash下载文件。必须将它们发送到服务器,然后服务器应初始化下载。