2

我制作了使用 AudioRecorder 类以 pcm 格式录制文件的应用程序。我列出了我的应用程序中的所有文件,我想从所有文件中获取持续时间,但我有问题。我试过了:

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

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

我对这个解决方案只有错误。

4

1 回答 1

0

来自 Android 开发文档:

新构建的 MediaPlayer 对象与调用 reset() 后的 MediaPlayer 对象之间存在细微但重要的区别。调用 getCurrentPosition()、getDuration()、getVideoHeight()、getVideoWidth()、setAudioStreamType(int)、setLooping(boolean)、setVolume(float, float)、pause()、start() 等方法是编程错误、stop()、seekTo(int)、prepare() 或 prepareAsync() 在这两种情况下都处于空闲状态。如果在构建 MediaPlayer 对象后立即调用这些方法中的任何一个,则内部播放器引擎不会调用用户提供的回调方法 OnErrorListener.onError() 并且对象状态保持不变;但如果这些方法在 reset() 之后立即调用,则用户提供的回调方法 OnErrorListener。

由于您使用数据源的 URL,我会尝试然后prepareAsync()调用getDuration().onPrepared()

于 2013-10-18T21:07:08.637 回答