我正在开发一个流式传输音频的 Android 应用程序。我目前正在使用 Android MediaPlayer。如果我在流式传输时寻找音频文件中的某个位置,同时寻找已下载到我的 Mac 的同一音频文件中的同一位置(使用 QuickTime Player),我不会找到相同的音频位置。显示屏显示我在同一位置 (02:49:54),但音频播放的声音不一样(流媒体服务器比正确位置晚 20-40 秒)。我尝试了 Exoplayer Demo 应用程序,并用我自己的流 url 替换了其中一个静态 url。Exoplayer也会发生同样的事情。我作为 iOS 开发人员工作的朋友在流式传输时(使用相同的流式传输服务器)寻找正确的位置没有问题。我还有一个问题,有时流在实际音频流完成前几秒钟就停止了。我希望 Exoplayer 能解决我的问题,因为旧的 MediaPlayer 似乎有点问题。有谁知道我为什么会遇到这些问题?
1 回答
我已通过将 -t 添加到用于减小 mp3 大小的 LAME 命令中来解决此问题。如果添加 -t 选项,则不会将额外的 LAME 信息写入音频文件:
Kaspers-MacBook-Pro:Bomben finne$ mediainfo bomben2.mp3 General
全名:bomben2.mp3
格式:MPEG 音频
文件大小:67.9 MiB
时长 : 3h 17mn
整体比特率模式:恒定
总比特率:48.0 Kbps
声音的
格式:MPEG 音频
格式版本:版本 1
格式配置文件:第 3 层
时长 : 3h 17mn
比特率模式:恒定
比特率:48.0 Kbps
频道:1 个频道
采样率:32.0 KHz
压缩模式:有损
流大小:67.9 MiB (100%)
但这仍然应该修复,因为它在 iOS 上运行良好。现在您可以通过运行来重现错误:
跛脚 -mm --preset cbr 48 source.mp3 output.mp3
然后让它工作:
lame -t -mm --preset cbr 48 source.mp3 output.mp3
我已经创建了这个问题: https ://code.google.com/p/android/issues/detail?id=158627&thanks=158627&ts=1425655288