0

我需要实现一个多轨播放器。用户可以上传多个曲目并混合(一起播放)。我的问题是允许用户定义每个轨道的确切开始位置以允许它们之间的同步,如下所示:

曲目 1:从 [x] 秒开始。

曲目 2:从 [y] 秒开始。

播放/停止

用户可以在其中设置 x 和 y。我尝试使用 AS2(使用 netstream 和 setInterval)和 AS3(使用 netstream 或声音和计时器)来实现它。只有当我设置相同的 x 和 y 时,两个曲目才会同时播放。

4

1 回答 1

1

假设您有一个时间线“引擎”,它具有某种内部时钟。时钟的每个“滴答声”,您都将检查一些包含 Track 对象的数组或向量,并查看它是否包含一个从时间线开头开始的 startTime 为 n 个滴答声的对象。或者也许更有效地创建一个存在于 TrackObjs 向量中的开始时间向量并检查它,然后如果找到一个,则运行 TrackObjs 向量并获取当时需要启动的所有音频。

这里的刻度可以是秒、10 秒、毫秒等等。有关基于帧的计时,请参见http://as3.casalib.org/docs/org.casalib.time类

类轨道(){
  变量开始时间:int;
  变量轨道名称:字符串;
  var 文件名:字符串;
}

对于多个混合声音的实际播放,有各种库可以为您完成大部分繁重的工作。

http://www.gaiaflashframework.com/wiki/index.php?title=Sound_Groups
这可能有一些对您有用的代码,尽管您可能需要将其与 Gaia 框架分离。也许更好:
Matt Przybylski 的 SoundManager 类http://www.reintroducing.com
Guttershark SoundManager 类http://codeendeavor.com/guttershark

这些也可能对动态声音生成感兴趣:
http
://code.google.com/p/benstucki/ “Flaudio 是 ActionScript 3 的动态运行时音频生成和处理库”

http://code.google.com/p/popforge/
“Popforge AS3 音频库允许您使用自己的样本创建有效的 flash.media.Sound 对象。这为使用当前的 Adob​​e Flash Player 进行声音设计开辟了新的视角9. 您可以创建任何类型的合成器、效果器和采样播放器。提供的 AudioBuffer 类允许您创建无休止的音频播放。"

于 2009-12-10T01:41:04.590 回答