【发布时间】:2010-10-26 21:37:35
【问题描述】:
我正在开发一个能够广播定向广告的流媒体服务器。基本上听众会听到相同的音乐,但是每隔 30 分钟就会出现一个广告块,每个听众都有自己的广告块。实现这样的流媒体服务器会带来各种问题,这个问题就是其中之一。
服务器将以类似于 Icecast 的方式工作,即它将通过网络从某个流生成器读取流并将其中继给每个侦听器。当广播广告时,服务器停止从生成器获取流,从文件中读取广告并将它们插入每个侦听器的缓冲区,传输它们并继续从生成器中继流。
当服务器从中继流切换到广播广告时,它必须连接两个 MP3 流(我们在 MP3 中广播)。我担心的是,简单地将一个数据附加到另一个数据可能会产生一些听得见的伪影。可以无缝完成吗?
我已经想通了: - 我可以让服务器知道 MP3 帧以避免同步错误。 - 我正在考虑在流中的 MP3 帧之后附加广告文件中的 MP3 帧。 - 由于广告是从正确编码的 MP3 文件加载的,所以我绕过了字节库的问题,因为文件的第一帧不能使用它。
但我关心的是 MDCT 的工作方式。听众不知道我的服务器会做什么,因此他们的 MP3 解码器可能会产生一些伪影,因为不正确的 MDCT 数据将一个接一个地放置在他们下载的流中。带有广告的文件开头的零填充会对此进行补偿吗?
你知道哪些库/工具(如果可能的话是开源的)可以无缝连接两个 MP3 文件而无需解压缩?
你能指出任何描述 MP3 格式的好资源吗?我在网上搜索了很多,找到了很多信息,但我还是错过了大局。
也许您知道如果我使用其他编解码器(如 OGG/Vorbis、AAC)会更容易?
PS。这个问题不是What is the best way to merge mp3 files? 的重复问题。 mp3wrap 和类似的工具不适合我。
【问题讨论】: