浅谈如何使用代码为MP3文件写入ID3Tags

本文作者郑童宇分享了在Android开发中如何利用Java为MP3文件写入ID3标签,包括ID3v1和ID3v2的实现方式,提供代码示例。
摘要由CSDN通过智能技术生成

作者:郑童宇
GitHub:https://github.com/CrazyZty

1.前言

  做了三年左右的Android开发,一直没写过博客,最近正好打算换工作,算是闲一些,就将以前开发所遇到的一些有趣的问题及解决方法写出来,以供他人借鉴。

  MP3作为音频领域应用最广的压缩方式之一想必大家都有所了解,本篇博文探究的不是MP3著名的压缩方式,而是如何为MP3文件写入ID3Tags。写下本博文的原因是类似的博文太少,以前做这方面的时候,google出来的大多是使用某一软件或库来进行处理,少许涉及代码的基本都是读取标签信息,或写入ID3v1标签,更糟糕的是网上大多数对ID3v2标签的读取是存在问题,以至于当我试图借鉴读取标签的博文来反向为MP3文件写入ID3v2标签时一直出现标签信息乱码的情况,直到google出一篇文章才得以解决。

  本篇博文以Java作为示例语言,以Android作为示例平台。

2.ID3标签

2.1.ID3v1标签

  ID3v1是一个很方便写入和解析的标签,维基百科上对ID3v1的解释是"v1版的ID3在MP3文件的末尾128字节,以TAG三个字符开头,后面跟上歌曲信息"。
  通过http://bbs.pfan.cn/post-372622.html,我们可以获取128个字节的具体信息:
  名称        字节   说明
  Tag       3     ID3V1标识符“TAG”的Ascii码
  Title      30   歌曲名
  Artist           30   歌手名
  Album    30      专辑名
  Year        4     日期信息
  Comment    28   注释信息,有时为30字节
  Reserved     1    =0说明有音轨,下一字节就是音轨;≠0表示注释是30个字节
  Track      1     音轨(字节型数值),歌曲在专辑里的序号 
  Genre     1     歌曲风格(字节型数值)

  看到这个数据结构,想必大家已经很清楚如何写入ID3V1标签了,下面我就直接贴出代码,并对代码中部分模块进行解释。

<span style="font-family:Microsoft YaHei;font-size:14px;">    public static void StorageMusicFileWithID3V1Tag(File sourceFile, String musicFilePath,
                                                    String songName, String artistName,
                                                    String albumName) {
        try {
            sourceFile.renameTo(new File(musicFilePath));

            RandomAccessFile musicRandomAccessFile = new RandomAccessFile(musicFilePath, "rw");
            musicRandomAccessFile.seek(musicRandomAccessFile.length() - 128); // 跳到ID3V1开始的位置

            byte[] tag = new byte[3];
            musicRandomAccessFile.read(tag);

            if (new String(tag).equals("TAG")) {
                return;
          
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值