利用第三方jar包jaudiotagger实现与MediaMetadataRetriever类似的功能,获取音乐文件的播放时长
16lz
2021-01-23
MediaMetadataRetriever是Android原生的一个类,用于获取音视频文件的原信息如音乐时长等等。
API:http://www.android-doc.com/reference/android/media/MediaMetadataRetriever.html
最初的实现是这样的:
MediaMetadataRetriever mmr = new MediaMetadataRetriever();try { mmr.setDataSource(path);//文件路径} catch (Exception e) { e.printStackTrace();}long time = Long.parseLong(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));time = time / 1000;
在本地环境下OK,但是在测试那边很奇怪地获取不到。于是尝试使用jaudiotagger实现与之类似的功能。
API:http://www.jthink.net/jaudiotagger/javadoc/index.html
参考了博客:https://blog.csdn.net/yj_vs_gy/article/details/47950263
但仅限于获取MP3格式的音乐文件的音乐时长,之后进行改进,使用其父类AudioFile:
File file = new File(path);AudioFile audio = AudioFileIO.read(file);int time = audio.getAudioHeader().getTrackLength();//以下仅为MP3格式实现MP3File mp3 = (MP3File) AudioFileIO.read(file);MP3AudioHeader audioHeader = (MP3AudioHeader) mp3.getAudioHeader();int time = audioHeader.getTrackLength();
经过测试暂时不支持的音乐格式有:aac、ape、m4a等等。
jar包下载链接:http://repo1.maven.org/maven2/org/jaudiotagger/2.0.3/jaudiotagger-2.0.3.jar
更多相关文章
- 在Android中实现文件读写
- Android里解析AndroidManifest.xml的java文件
- android 文件系统结构及其引导
- Android中彩信文件的读取
- Android 上传图片到服务器(多文件上传)
- Android 系统文件简介
- android自动化测试工具
- Android yyyy-MM-dd'T'HH:mm:ss.SSS Z 格式转换 yyyy-MM-dd HH:m
- Android 保存数据到文件