用Java编辑mp3文件(ID3)

时间:2011-08-11 18:52:19

标签: java mp3 edit id3

我在编程方面有点新意,所以我希望你能帮助我:)。

最近,我一直在尝试写一些可以改变mp3文件的id3标签的东西。我设法编写很容易获得这些标签的代码,但我不知道如何编写代码更改标签。我认为可能没有简单的解决方案,所以我决定尝试一些库。这可能是我的错,但它们都不起作用。

无论如何,我的问题是:如果它很简单 - 如何让我自己的id3标签获取代码? 如果没有,你可以推荐任何图书馆吗?你确定它们有效,所以我可以花几个小时试图自己运行它:))

5 个答案:

答案 0 :(得分:3)

对于这些年来磕磕绊绊的人来说,mp3agic可能会很方便。

答案 1 :(得分:1)

请检查此内容。

https://www.rgagnon.com/javadetails/java-process-mp3-tags.html

Jaudiotagger(bitbucket存储库)是用于标记音频文件中数据的音频标记库。它目前完全支持Mp3,Mp4(Mp4音频,M4a和M4p音频)Ogg Vorbis,Flac和Wma,但对Wav和Real格式的支持有限。

答案 2 :(得分:1)

您应该看一下库jAudioTagger。下面是将自定义标签(TXXX)写入音频文件的示例:

/**
 * This will write a custom ID3 tag (TXXX).
 * This works only with MP3 files (Flac with ID3-Tag not tested).
 * @param description The description of the custom tag i.e. "catalognr"
 * There can only be one custom TXXX tag with that description in one MP3 file
 * @param text The actual text to be written into the new tag field
 * @return True if the tag has been properly written, false otherwise
 */

public boolean setCustomTag(AudioFile audioFile, String description, String text){
    FrameBodyTXXX txxxBody = new FrameBodyTXXX();
    txxxBody.setDescription(description);
    txxxBody.setText(text);

    // Get the tag from the audio file
    // If there is no ID3Tag create an ID3v2.3 tag
    Tag tag = audioFile.getTagOrCreateAndSetDefault();
    // If there is only a ID3v1 tag, copy data into new ID3v2.3 tag
    if(!(tag instanceof ID3v23Tag || tag instanceof ID3v24Tag)){
        Tag newTagV23 = null;
        if(tag instanceof ID3v1Tag){
            newTagV23 = new ID3v23Tag((ID3v1Tag)audioFile.getTag()); // Copy old tag data               
        }
        if(tag instanceof ID3v22Tag){
            newTagV23 = new ID3v23Tag((ID3v11Tag)audioFile.getTag()); // Copy old tag data              
        }           
        audioFile.setTag(newTagV23);
    }

    AbstractID3v2Frame frame = null;
    if(tag instanceof ID3v23Tag){
        frame = new ID3v23Frame("TXXX");
    }
    else if(tag instanceof ID3v24Tag){
        frame = new ID3v24Frame("TXXX");
    }

    frame.setBody(txxxBody);

    try {
        tag.addField(frame);
    } catch (FieldDataInvalidException e) {
        e.printStackTrace();
        return false;
    }

    try {
        audioFile.commit();
    } catch (CannotWriteException e) {
        e.printStackTrace();
        return false;
    }
    return true;
}

答案 3 :(得分:0)

Processing有处理音频,视频甚至3D(当然还有正常图像)的方法

答案 4 :(得分:0)

这个图书馆:

http://javamusictag.sourceforge.net/

提供了一种读写id3标签的方法。