我正在开发音乐播放器,我快完成了。但是我需要尝试一下,因为我已经看到有更多的商业音乐应用程序在播放音乐时使用不同类型的动画来增大和减小音量。
我需要这样的东西
我该怎么做?有谁能够帮助我?预先谢谢你。
答案 0 :(得分:1)
如果要通过SourceDataLine输出音频,则可以在处理音频数据时对其进行检查。 Oracle Sound Trail教程的第Using Files and Format Converters页的“读取声音文件”部分中提供了一个有用的代码示例。代码中的重点标有注释“ // Here, do something useful
”
这时,您需要将字节转换为音频值,并将这些值用作RMS计算的一部分。覆盖范围和RMS计算的详细信息应该可以搜索到-我知道我已经在stackoverflow上看到了两者的解释。
一旦计算出RMS值,就可以将其发送到处理图形可视化的独立线程。应该采用松散耦合模式,这样可以最大程度地减少音频线程上的工作量,并避免任何可能挂断音频的阻塞。
例如,可视化线程可以具有setRMSValue方法,该方法仅更新实例变量,而不会进行任何同步或阻塞。音频处理线程可以在生成新的RMS数据点时自由调用此方法。可视化程序可以以动画速率同时读取当前实例变量。无需synchronization
。如果可视化线程跳过了几个RMS数据点,那应该没问题。