我正在使用 NetConnection 和 NetStream 流式传输音频。我知道您可以使用 Sound 对象实时修改示例数据,但是我找不到使用 NetStream 对象播放音频的 SampleDataEvent。有没有办法将音频从 NetStream 对象传递到 Sound 对象并修改该对象的声音?
编辑: 我愿意做任何疯狂的黑客,所以任何解决方案都可以!
我正在使用 NetConnection 和 NetStream 流式传输音频。我知道您可以使用 Sound 对象实时修改示例数据,但是我找不到使用 NetStream 对象播放音频的 SampleDataEvent。有没有办法将音频从 NetStream 对象传递到 Sound 对象并修改该对象的声音?
编辑: 我愿意做任何疯狂的黑客,所以任何解决方案都可以!
您需要访问声音的字节码,如果使用 netstream ,除了正在流式传输的数据之外,只能通过将其传递给(请求它)NetStream.send()
/来实现。否则你需要一个或NetConnection.call()
Sound
URLStream
根据您正在寻找的质量,您可以将其牺牲为具有低比特率的单声道信号,您可以将其流式传输以在客户端将其作为 URLStream 获取,然后提供该数据URLStream 到空 Sound 对象的 SampleDataEvent,在运行时逐步进行。
额外的工作主要在服务器端,将 MP3 解压缩为浮点数的波形流(单通道 [单声道] 信号流或将两者混合为单声道),然后将其推送到您的客户端应用程序。
当 URLStream 被加载时,将它下载的字节附加到 Sound 的 SampleDataEvent 上可用的 ByteArray(也给它一些缓冲区“时间”来加载足够的波形数据)。对于从 URLStream 读取的每个单声道样本,您应该将相同的值写入 SampleDataEvent.data 对象两次(一次写入左通道,一次写入右侧)。
尽管如此,将类似 WAV 的声音流降级为单声道可能不足以减少带宽并覆盖广泛的目标受众。也许看一下 AS3 的 OGG 库(应该存在)将是一个更好的选择,并且肯定应该支持解码部分下载的流。