Java 实现MP3文件信息读取

本文介绍了如何使用Java从MP3文件的ID3v2标签中读取音乐信息,包括歌名、歌手和专辑等。在原有代码基础上进行了改进,解决了中文歌曲信息读取为空的问题。
摘要由CSDN通过智能技术生成

前言:

最近在做实训,写一个音乐播放器,将文件存储在服务端,然后将相应的数据信息添加到数据库中。不想一个个手动添加,所以在百度之后发现MP3文件本身是只带这些信息的。

 

更新因为目前mp3文件中ID3v1的信息较少导致下述代码不能正常获取相关信息.

 

我对下述代码进行了改进. 具体项目代码地址

 

主要变动.

1. 使用由获取ID3v1中的信息变成了获取,ID3v2中的信息.

2. 去除了字符串过滤.

 

class MusicUtil {

    private static final String SONG_NAME_KEY = "TIT2";
    private static final String ARTIST_KEY = "TPE1";
    private static final String ALBUM_KEY = "TALB";

    /**
     * 通过歌曲文件地址, 获取歌曲信息
     *
     * @param filePath 歌曲文件地址
     * @return 歌曲信息
     * @throws Exception 可能抛出空指针异常
     */
    static Music getMusicInfo(String filePath) throws Exception {

        Music music = null;

        try {

            MP3File mp3File = (MP3File) AudioFileIO.read(new File(filePath));

            MP3AudioHeader audioHeader = (MP3AudioHeader) mp3File.getAudioHeader();

            // 歌曲名称
            String songName = getInfoFromFrameMap(mp3File, SONG_NAME_KEY);
            // 歌手名称
            String artist = getInfoFromFrameMap(mp3File, ARTIST_KEY);
            // 歌曲专辑
            String album = getInfoFromFrameMap(mp3File, ALBUM_KEY);
            // 播放时长
            int duration = audioHeader.getTrackLength();

            // 封装到music对象
            music = new Music(songName, artist, album, duration, filePath);

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("文件读取失败!" + e);
        }

        return music;
    }

    /**
     * 通过键值,获
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值