Android如何获取音频文件持续时间

时间:2013-10-18 21:01:02

标签: java android audio duration pcm

我做了一个应用程序,它使用类AudioRecorder来记录格式为pcm的文件。我列出了我的应用程序中的所有文件,我想从所有文件中获取持续时间,但我有问题。我试过了:

MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
   metaRetriever.setDataSource(filePath);

MediaPlayer mplayer =  new MediaPlayer();
mplayer.reset();
mplayer.setDataSource(URL);
mplayer.prepare();
Integer totalFileDuration = mplayer.getDuration();

我对此解决方案只有错误。

1 个答案:

答案 0 :(得分:0)

来自Android开发者文档:

  

新建的之间有一个微妙但重要的区别   调用reset()后的MediaPlayer对象和MediaPlayer对象。   调用诸如的方法是一个编程错误   getCurrentPosition(),getDuration(),getVideoHeight(),   getVideoWidth(),setAudioStreamType(int),setLooping(boolean),   setVolume(float,float),pause(),start(),stop(),seekTo(int),   两种情况下,处于空闲状态的prepare()或prepareAsync()。如果有的话   在MediaPlayer对象之后立即调用这些方法   构造后,用户提供了回调方法   内部播放器不会调用OnErrorListener.onError()   引擎和物体状态保持不变;但如果这些方法   在reset()之后调用,用户提供了回调方法   OnErrorListener.onError()将由内部播放器调用   引擎和对象将被转换为错误状态。

由于您使用的是数据源网址,因此我会尝试prepareAsync(),然后在getDuration()中致电onPrepared()