Android卡拉OK文字?

时间:2011-05-18 20:41:20

标签: android

过去一周,我一直在摸不着头脑,对文字做这个效果。 http://www.youtube.com/watch?v=gB2PL33DMFs&feature=related 如果有人可以给我一些提示或指导或教程如何做到这一点会很棒。

感谢阅读和回答= D

2 个答案:

答案 0 :(得分:1)

如果你想要的只是显示带有视频和声音的电影,MediaPlayer可以很容易地做到这一点。

所以我假设你实际上是在谈论同步某种动画显示与单独播放的声音文件。我们使用MediaPlayer并在动画循环中轮询getCurrentPosition来完成此操作。这或多或少有效,但存在需要克服的严重问题。 (所有这些都涉及播放mp3文件;我们没有尝试任何其他音频格式。)

首先,您的mp3 必须以44,100 Hz采样率录制。否则getCurrentPosition返回的值就会消失。 (我们认为它是通过实际采样率与44,100的比率来缩放的,但我们没有验证这个假设。)128,000的比特率似乎效果最好。

其次,更严重的是,getCurrentPosition返回的值似乎随着时间的推移从设备发出的声音中消失。大约45秒后,这开始变得非常明显。更糟糕的是,这种漂移在不同的操作系统级别(可能是设备之间)明显不同(但始终存在)。 (我们在模拟器和真实设备上测试了2.1和2.2,在模拟器上测试了3.0。)我们怀疑某种缓冲问题,但无法真正诊断它。我们的解决方法是将较长的mp3文件分解为短段并链接其播放。大量记账加剧。这仍然在测试中,但到目前为止似乎已经奏效。

答案 1 :(得分:1)

Ted Hopp:MP3文件漂移的时间很可能是因为这些MP3文件是VBR。我一直在开发卡拉OK应用程序,几乎每个工具包 - 从Qt Phonon到ffmpeg - 在可变MP3文件上报告正确的音频位置时都遇到了问题。我认为这是因为他们都试图通过使用解码帧的数量来计算当前音频位置,这使得VBR MP3不可靠。我在Karaoke Lyrics Editor FAQ

中以用户友好的方式对其进行了描述

不幸的是,我找到的唯一解决方案是将MP3重新编码为CBR。另一个是彻底抛弃当前位置,仅依靠系统时钟。这实际上为VBR MP3带来了更好的结果,但仍然不如将它们重新编码到CBR中那么好。

相关问题