有什么更好的方法来播放mp3 / wav和改变速度(音频速度)Android?

前端之家收集整理的这篇文章主要介绍了有什么更好的方法来播放mp3 / wav和改变速度(音频速度)Android?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我试过了

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

什么会更好用?任何想法或建议?我该怎么办?

最佳答案
自上次回答以来,有些事情发生了变化,所以我会尝试提供一些新信息:

TL; DR:ExoPlayer是最好的解决方案.它使用Sonic并且更容易编译.

媒体播放器

>优点:Android API的一部分,无需添加库,最快的解决方
>缺点:速度和音调仅适用于API 23及更高版本

如何改变速度:

mediaPlayer.setPlaybackParams(new PlaybackParams().setSpeed(1.5f));

Sonic NDK

>优点:使用旧API,质量好
>缺点:与PCM配合使用需要MP3解码器,C编译使您的项目和构建过程复杂化

但是……缺点并不是那么糟糕.

PCM事物实际上不再是问题,因为Android有MediaCodec API,所以你不需要外部MP3解码器.

我在github上有一个项目,它使用Sonic和Android的deocder并为Android Studio配置(原始项目是Eclipse):
https://github.com/mega-arbuz/android-mp3-sonic-ndk

您还可以避免编译C代码并使用Sonic的JAVA实现:
https://github.com/waywardgeek/sonic/blob/master/Sonic.java

ExoPlayer

>优点:使用Sonic获得速度/音高/速率,质量好,适用于API 16,由Google提供支持
>缺点:不像MediaPlayer那样的SDK的一部分,有点大(6k方法,1MB),使用比MediaPlayer更复杂

Tutorial for creating Activity with ExoPlayer

Documentation and samples

完成本教程后,速度变化很简单:

player.setPlaybackParameters(new PlaybackParameters(1.5f,1.0f));

几年前,带有解码器的Sonic是最好的解决方案,但现在ExoPlayer是最好的.它支持足够老的API,使用Sonic,具有相同的语音质量,不需要复杂的编译和项目设置.

猜你在找的Android相关文章