闪存 9 : How to determine if a streaming track is mono?

标签 flash audio streaming mp3

几个月来我一直试图解决这个问题......
在 Flash 9 中,我尝试加载流式 MP3 文件并计算其轨道长度。我可以做到这一点,但是当 mp3 的 channel 是单声道时,时间是原始音轨长度的两倍。我是怎么想出来的?好吧,我通过在 Windows 上录制到 Sound Recorder 来测试我的播放器,但幸运的是,我忘了用立体声录制 MP3。

现在,在 Flash 中,我尝试使用加载的字节数、总字节数、播放位置和所有您可能想到的公式来计算持续时间。数学很好。问题是当 Flash 加载 mp3 时,它会自动假定文件是立体声的。因此,当它加载数据时,它会继续并将其认为拥有的字节量加倍,因为它识别出一个特定大小的 channel ,然后将其加倍以获得立体声。这会产生负载大小的错误值,通过正确的数学运算,仍然会使轨道长度加倍。这就是为什么单声道不适用于我们使用的常用公式。

为了解决这个问题,我需要一种方法来确定文件是单声道还是立体声。不,ID3 数据也返回错误的值,我已经尝试使用 soundTransform.leftToLeft、soundTransform.leftToRight、soundTransform.rightToLeft 和 soundTransform.rightToRight 手动确定(它返回立体声值)。

我不知道有什么方法可以让 Flash 正确地告诉你文件有哪些音频 channel 。我希望我只是忽略了一些东西,任何帮助或故障排除提示,无论我是否已经尝试过,都将不胜感激。

最佳答案

你确定ID3是正确的?
我有几个 mp3 报告长度错误,不是因为立体声/单声道问题,而是因为 header 损坏。

关于闪存 9 : How to determine if a streaming track is mono?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/605748/

相关文章:

php - 动态类型语言和远程方法调用

android - Flash 未在 Android 的 Web View 中加载

Flash CS4不肯放手

android - 如何设置最长持续时间记录,释放文件并使用媒体记录器自动开始记录

java - vlcj libvlc 流媒体桌面在一段时间后停止

haskell - 概括Haskell "Streaming"库的合并功能

php - 从 Flash 请求 php 文件在 Safari 中挂起

Java采样率转换

javascript - 如何切换dom音频元素

c - 在 UDP 上流式传输