转载

JAudiotagger读取/修改音乐文件的属性信息

最近需要用java读取音频文件(mp3,flac格式的文件)的详细属性信息,比如:包括采样率(SampleRate)、制作格式或制作技术(Format)、单曲名(TITLE)、单曲艺术家(ARTIST)、专辑名(ALBUM)、专辑艺术家(ALBUM_ARTIST)、音轨号(TRACK)、语言(LANGUAGE)、版权方(COPYRIGHT)等等,并统一修改。研究了好久,发现有个第三方的开源jar,很好用。

JAudiotagger

官网地址:http://www.jthink.net/jaudiotagger

API DOC:http://www.jthink.net/jaudiotagger/javadoc/index.html

下载地址:https://repo1.maven.org/maven2/org/jaudiotagger/2.0.3/

使用示例:

使用起来,很简单,读取MP3文件的Title和歌唱家属性,并修改:

private void readMP3File(File file){
        String fileName = file.getName();
        if(!fileName.endsWith(".MP3") && !fileName.endsWith(".mp3")){
            return;
        }
 
        /**
         * 自定义 标题  作者  专辑
         */
        String _author = "周杰伦";
        String _title = "青花瓷";
        String _album = "《范特西》";
 
        MP3FileReader reader = new MP3FileReader();
        try {
            AudioFile audioFile = reader.read(file);
            Tag tag = audioFile.getTag();
 
            boolean update = false;
            String ARTIST = tag.getFirst(FieldKey.ARTIST);
            if(StringUtils.isEmpty(ARTIST) ){
                tag.setField(FieldKey.ARTIST,_author);
                update = true;
            }
            String TITLE = tag.getFirst(FieldKey.TITLE);
            if(StringUtils.isEmpty(TITLE) ){
                tag.setField(FieldKey.TITLE,_title);
                update = true;
            }
            String ALBUM = tag.getFirst(FieldKey.ALBUM);
            if(StringUtils.isEmpty(ALBUM) ){
                tag.setField(FieldKey.ALBUM,_album);
                update = true;
            }
            /**
             * 如果有修改,写入文件
             */
            if(update){
                MP3FileWriter writer = new MP3FileWriter();
                writer.writeFile(audioFile);
            }
 
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
 
    }

同样,对于无损音乐文件也是一样的使用方式,只是,把Reader类 和 Writer类换成Flac的封装:

FlacFileReader reader = new FlacFileReader();
AudioFile audioFile = reader.read(file);
Tag tag = audioFile.getTag();
FlacFileWriter writer = new FlacFileWriter();
writer.write(audioFile);

对于其他的属性和信息,大家可以参考官方文档。

参考文章:https://www.cnblogs.com/once/p/3734755.html

原文  http://www.liuzk.com/374.html
正文到此结束
Loading...