java 批量获取&修改mp3文件标题、艺术家等内容

最近下了一本有声小说,文件名称是每一集的集数,但标题全是网址,放到手机音乐播放器名称显示的是标题,完全看不出是哪一集,200多集如果一集一集改怕是手得废掉,想用代码解决便baidu了一下,倒是有不少可以获取mp3文件信息的代码,修改的就查到一个,结果那人折腾了半天还是让你用 windows的属性->详细信息 去修改,瞬间无语不知道这老兄写这篇文章干啥,最终google了一下,终于让我找到了方法,给各位分享一下

一、引包

<dependency>
    <groupId>com.mpatric</groupId>
    <artifactId>mp3agic</artifactId>
    <version>0.9.1</version>
</dependency>

二、修改信息代码

import com.mpatric.mp3agic.*;
import java.io.File;
import java.io.IOException;
/**
 * 获取、修改mp3文件信息
 *
 * @author gsdcr
 */
public class Mp3Demo {
    /**
     * 原来文件存放位置
     */
    public static String originPath = "C:/文件/原来/";
    /**
     * 新文件存放位置
     */
    public static String targetPath = "C:/文件/目标/";

    public static void main(String[] args) throws InvalidDataException, IOException, UnsupportedTagException, NotSupportedException {
        File parentFile = new File(originPath);
        File targetFile = new File(targetPath);
        // 创建新文件父目录
        targetFile.mkdirs();
        // 获取原来所有文件
        File[] files = parentFile.listFiles();
        for (File file : files) {
            // 创建 Mp3File 对象
            Mp3File mp3file = new Mp3File(file);
            // 获取文件名
            String fileName = file.getName();
            // 获取ID3v2对象,通过该对象可以获取文件信息如标题、艺术家等内容
            ID3v2 id3v2Tag = mp3file.getId3v2Tag();
            // 将文件名去除扩展名作为新的标题
            String newTitle = fileName.substring(0, fileName.lastIndexOf("."));
            // 简单打印一下
            System.out.println(id3v2Tag.getTitle() + "->" + newTitle);
            // 修改标题
            id3v2Tag.setTitle(newTitle);
            // 修改艺术家
            id3v2Tag.setArtist("zhy");
            // 修改唱片集
            id3v2Tag.setAlbum("ysj");
            // 将修改后的文件保存到新的目录
            mp3file.save(targetPath + fileName);
        }
    }
}

三、处理前后对比

处理前.png

处理后.png

四、附录

  1. mp3agic包github地址
    http://github.com/mpatric/mp3agic
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。