我试过了
1) MediaPlayer(it Doesnt support speed change).
2) SoundPool (play only small audio files)
3) AudioTrack (tried with JLayer- there is delay. decoder is slow).
4) Sonic NDK master - unable to play mp3 audio files
Run Code Online (Sandbox Code Playgroud)
什么会更好用?任何想法或建议?我该怎么办?
自上次回答以来,有些事情发生了变化,所以我将尝试提供一些新信息:
TL;DR: ExoPlayer 是最好的解决方案。它使用 Sonic 并且更容易编译。
媒体播放器
如何改变速度:
mediaPlayer.setPlaybackParams(new PlaybackParams().setSpeed(1.5f));
Run Code Online (Sandbox Code Playgroud)
索尼克NDK
但是......缺点并没有那么糟糕。
PCM 的事情实际上不再是问题了,因为 Android 有 MediaCodec API,所以你不需要外部 MP3 解码器。
我在github上有一个项目,它使用Sonic与Android的解码器并为Android Studio配置(原始项目是Eclipse): https://github.com/mega-arbuz/android-mp3-sonic-ndk
您还可以避免编译 C 代码并使用 Sonic 的 JAVA 实现: https: //github.com/waywardgeek/sonic/blob/master/Sonic.java
外放播放器
完成本教程后,速度更改很简单:
player.setPlaybackParameters(new PlaybackParameters(1.5f, 1.0f));
Run Code Online (Sandbox Code Playgroud)
几年前,带解码器的 Sonic 是最好的解决方案,但现在 ExoPlayer 是最好的。它支持足够旧的API,使用Sonic,具有相同的语音质量,并且不需要复杂的编译和项目设置。
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |