【问题标题】:Android How to get Audio File durationAndroid 如何获取音频文件的持续时间
【发布时间】:2013-10-27 20:19:56
【问题描述】:
我制作了使用 AudioRecorder 类以 pcm 格式录制文件的应用程序。我列出了我的应用程序中的所有文件,我想从所有文件中获取持续时间,但我有问题。我试过了:
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(filePath);
和
MediaPlayer mplayer = new MediaPlayer();
mplayer.reset();
mplayer.setDataSource(URL);
mplayer.prepare();
Integer totalFileDuration = mplayer.getDuration();
我对这个解决方案只有错误。
【问题讨论】:
标签:
java
android
audio
duration
pcm
【解决方案1】:
来自 Android 开发文档:
新建的建筑之间有一个微妙但重要的区别
MediaPlayer 对象和reset() 后的MediaPlayer 对象被调用。
调用方法是一个编程错误,例如
获取当前位置(),获取持续时间(),获取视频高度(),
getVideoWidth(), setAudioStreamType(int), setLooping(boolean),
setVolume(float, float), pause(), start(), stop(), seekTo(int),
对于这两种情况,prepare() 或 prepareAsync() 都处于空闲状态。如果有的话
这些方法中的一个在 MediaPlayer 对象被调用后立即调用
构造,用户提供的回调方法
OnErrorListener.onError() 不会被内部播放器调用
引擎和对象状态保持不变;但如果这些方法
在用户提供的回调方法 reset() 之后立即调用
OnErrorListener.onError() 将由内部播放器调用
引擎和对象将被转移到错误状态。
由于您使用数据源的 URL,我会尝试 prepareAsync(),然后在 onPrepared() 中调用 getDuration()。