首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaPlayer显示了某些MP3文件的错误持续时间

MediaPlayer显示了某些MP3文件的错误持续时间
EN

Stack Overflow用户
提问于 2021-05-18 21:05:27
回答 2查看 107关注 0票数 0

我正在开发一个应用程序来播放古兰经的每一节。有6348个音频文件,它们都是由其他人托管的,它们的网址是一种特定的格式(例如www.url.com/{001-001})。

现在,对于很多经文,当我尝试获取mp3文件的持续时间时,它返回错误的持续时间。这个文件就是一个例子:https://www.dropbox.com/s/lssoh5abug9xezz/002-003-AR.mp3?dl=0。当文件大约有9秒长时,它一直给我6189的持续时间。

这个问题适用于一些文件,而其他文件似乎没有问题。我怎样才能解决这个问题?下载所有6348文件并对其进行更改并不是一个选项,因为纯粹的数量。

我尝试了使用mediaPlayer.getDuration()和下面的方法,但是结果是相同的:

代码语言:javascript
复制
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource("https://www.alislam.org/quran/search2/mp3-3/002-003-AR.mp3", new HashMap<String, String>());
try {
    URL url1=new URL("https://www.alislam.org/quran/search2/mp3-3/002-003-AR.mp3");
    AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(url1.);
} catch (MalformedURLException e) {
    e.printStackTrace();
}
for (int i=0; i < 40; i++){
    String m = metaRetriever.extractMetadata(i);
    System.out.println("********************** " + m);
}
  1. 我假设这是MP3文件本身的问题。是这样吗?
  2. 不需要修改每个文件并重新上传这些文件的最佳方法是什么?很明显,如果我能够在浏览器中播放它,并且显示正确的9秒,我应该能够使用某种方式获得9秒的值,如果不是上述方法的话?
  3. 我需要这个持续时间,主要是为了设置seekBar.setMax(duration);,还有其他方法来达到这个目的吗?
EN

回答 2

Stack Overflow用户

发布于 2021-05-18 21:37:14

很可能您的总持续时间是毫秒。您需要将其转换为秒和分钟,如下所示:

代码语言:javascript
复制
 int seconds = totalDuration / 1000;
 int mm = seconds % 3600 / 60;
 int ss = seconds % 60;

然后使用字符串格式化这些值:

代码语言:javascript
复制
String str = String.format ( "%02d:%02d"  , mm , ss );

注意,totalDuration值在这里很重要。最后的字符串也是必需的。

票数 0
EN

Stack Overflow用户

发布于 2021-05-20 19:39:27

当我在一个"h**ps://www.alislam.org/quran/search2/mp3-3/002-003-AR.mp3“编辑器中打开文件mp3时,它的持续时间是6秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67593951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档