3

私はJavaプログラミングに比較的慣れていません。ここでは、Android プロジェクトの 1 つを使用せずに、mp3 の新しい ID3 タグを変更/作成するために Jaudiotagger ライブラリを使用しようとしています。ただし、ライブラリを正しく動作させるように設定することはできません。つまり、ID3 タグが既に設定されている mp3 の場合、問題なくメタデータを正常に書き込んで変更できます。しかし、ID3 タグが設定されていない (空白の) mp3 の場合、アルバム カバーのアートワークを設定することしかできず、アーティスト、タイトル、アルバム カバーなどの他のフィールドは以前と同じように空白のままです。

ここに私のコードのスニペットがあります -

import org.jaudiotagger.audio.AudioFile;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.tag.FieldKey;
import org.jaudiotagger.tag.Tag;
import org.jaudiotagger.tag.TagOptionSingleton;
import org.jaudiotagger.tag.id3.ID3v23Tag;
import org.jaudiotagger.tag.images.Artwork;
import org.jaudiotagger.tag.images.ArtworkFactory;

try{
    TagOptionSingleton.getInstance().setAndroid(true);
    AudioFile f =AudioFileIO.read(file_path_to_mp3);
    f.setTag(new ID3v23Tag());
    Tag tag=f.getTag();
    tag.setField(FieldKey.ARTIST,artist);
    tag.setField(FieldKey.ALBUM,album);
    Artwork cover=ArtworkFactory.createArtworkFromFile(cover_file);
    tag.setField(cover);
    f.commit();
}catch (Exception e){
    e.printStackTrace();
}

エラーや例外がスローされることなく、プログラムを実行できます。アートワークは正常に設定できますが、タイトル、アーティスト、アルバムなどのマタデータタグは設定されません。助けてくれてありがとう!

4

1 に答える 1

0

mp3ファイルのデータを変更するのに役立つコードをいくつか書きます

    TagOptionSingleton.getInstance().setAndroid(true);

    File mp3File = new File(mp3Song);

    AudioFile audioFile = AudioFileIO.read(mp3File);

    audioFile.setTag(new ID3v23Tag());


    Tag newTag=    audioFile.getTag();

    if (album != null) {
        newTag.setField(ALBUM, album);
    }
    if (artist != null) {
        newTag.setField(ARTIST, artist);
    }

    if (trackName != null) {
        Log.d("ALBUM TITLE",trackName);

        newTag.setField(TITLE, trackName);
    }


    if (imageAlbum != null) {
        Log.d("ALBUM COVER",imageAlbum);

        File fileCover = new File(imageAlbum);
        if (!fileCover.exists()){

            Log.d("ALBUM ","DOESNT EXIST");

        }


        Artwork artwork = Artwork.createArtworkFromFile(fileCover);
        newTag.addField(artwork);
        newTag.setField(artwork);

    }
    audioFile.commit();de here
于 2016-03-08T00:12:05.453 に答える