我做了一个应用程序,它使用类AudioRecorder来记录格式为pcm的文件。我列出了我的应用程序中的所有文件,我想从所有文件中获取持续时间,但我有问题。我试过了:
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(filePath);
和
MediaPlayer mplayer = new MediaPlayer();
mplayer.reset();
mplayer.setDataSource(URL);
mplayer.prepare();
Integer totalFileDuration = mplayer.getDuration();
我对此解决方案只有错误。
答案 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()
。