【问题标题】:AS3 client + grails server - Processing audio at the client and sending it back to the serverAS3 客户端 + grails 服务器 - 在客户端处理音频并将其发送回服务器
【发布时间】:2012-03-08 23:44:19
【问题描述】:

我们正在编写一个 Flash 应用程序,它可以下载 MP3 文件、将其转换为 Sound 对象、获取原始数据并进行一些处理(例如添加声音、更改八度音阶)。处理后,我们希望将数据分块发送回服务器,以便服务器能够将数据粘合在一起并恢复新生成的文件。问题是:如果我们向服务器发送“wav”声音片段,我们可以在生成的文件中将它们粘合在一起而不会出现任何问题。但是,如果我们将每个 wav 片段转换为 mp3 文件(这样我们可以将较小的文件发送到服务器)并在服务器上加入 mp3 文件,结果是在合并点出现一些问题。

这是我们从服务器加载 mp3 文件的方式:

sourceSnd.load(new URLRequest("sample url to mp3"));
sourceSnd.addEventListener(Event.COMPLETE, carregou);

这就是我们如何将每一段 mp3 转换为 bytearray 和 wav:

sourceSnd.extract(buffer, tamanho2);        
...process the extract sound and....
var bytesWav : ByteArray = new ByteArray();
buffer.position = 0;
this.wavWriter.processSamples(bytesWav, buffer, 44100, 2);

如果我们将每个 mini-wav 文件发送回服务器(例如,使用套接字),我们就可以毫无问题地将它们粘合在一起。但是,如果我们使用以下代码转换每个 wav 字节数组:

bytesWav.position = 0;
var mp3Encoder : ShineMP3Encoder = new ShineMP3Encoder(bytesWav);
var objeto : teste = this;                                  
mp3Encoder.addEventListener(Event.COMPLETE, function(event : Event) : void {
    objeto.socket.send(mp3Encoder.mp3Data);
});
mp3Encoder.start();

加入文件后,创建的 mp3 文件在“合并”点处有很多声音问题。

我们怎样才能避免这样的声音问题?

客户端技术:AS3 服务器端技术:grails

【问题讨论】:

  • 您使用的这个套接字类是什么?您没有使用标准的 AS3 Socket 类吗?上次查了一下,AS3中的socket类没有“发送”功能。
  • Flash 以对其加载的对象进行荒谬的二进制修改而闻名。例如,Loader 对象实际上会将额外的二进制数据附加到它加载的图片和 SWF 文件中。闪存,不知何故这在内部很有用,但是当您尝试导出您认为是原始二进制数据的内容时,您会得到这个垃圾,这会破坏其他工具的可读性,这些工具不会期望这些额外的垃圾。我怀疑这里也发生了同样的事情。
  • 感谢 cmets。阅读此内容后,我们能够解决问题:lame.sourceforge.net/tech-FAQ.txt。这次 Flash 不是罪魁祸首!

标签: actionscript-3 grails audio-processing


【解决方案1】:

原来这是由将 wav 的每一段编码为 mp3 的过程引起的。编码器将它们转换为完整的 mp3 文件,为每段的第一帧和最后一帧添加静音。详细解释可以看这里:http://lame.sourceforge.net/tech-FAQ.txt

为了解决这个问题,我们必须编辑 ShineMP3Encoder 源代码,这样它就不会为每个处理的片段添加开始和结束帧(将其转换为“块处理器”)。这解决了问题,我们能够将修改后的 mp3 文件从客户端流式传输到服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多