4

Android アプリケーションで mp3 に歌詞を書きたいと思ってmp3ます。

mp3agicID3v2タグの歌詞タグを書くように修正して、 tag: を書きますUSLTウィキペディアで発見

サンプルの Android アプリで、MP3 のアーティスト、アルバム、タイトル、ジャンル、歌詞、コメントを変更します。歌詞を除いて、すべてのタグは正しく修正されています。変更されたファイルPowerAMPを検証するために使用され、MP3 で歌詞を見つけることができません。MP3PowerAMP

誰かがこのライブラリに精通している場合は、AbstractID3v2Tag.java から変更したコードを次に示します。

//define lyric tag for id3v2
public static final String ID_TEXT_LYRICS = "USLT";

//get the lyrics from the tag
public String getLyrics() {
    ID3v2TextFrameData frameData;
    if (obseleteFormat) return null;
    else frameData = extractTextFrameData(ID_TEXT_LYRICS);
    if (frameData != null && frameData.getText() != null) 
        return frameData.getText().toString();
    return null;
}

//set the lyrics in the tag
public void setLyrics(String lyrics) {
    if (lyrics != null && lyrics.length() > 0) {
        invalidateDataLength();
        ID3v2TextFrameData frameData = new ID3v2TextFrameData(useFrameUnsynchronisation(), new EncodedText(lyrics));
        addFrame(createFrame(ID_TEXT_LYRICS, frameData.toBytes()), true);
    }
}

MP3Windowsのプログラムで歌詞を設定USLTし、アプリでタグを読み取りgetLyrics()、文字列を返しましたengPowerAMPWindows プログラムによって設定されたこれらの歌詞を見つけました。

MP3 ID3タグ修飾子ライブラリを指す多くの投稿を検索して見つけました。そこにmp3agicが見つかりました。これは、歌詞の変更を組み込むために簡単に変更できる唯一のライブラリです。

私が見つけた 1 つのライブラリはMyID3_for_Androidで、歌詞を変更する方法がありませんでした。

これに関するガイダンスを探しています。

4

1 に答える 1

6

http://id3.org/id3v2.4.0-framesで公式の ID3 仕様を見る:

Header for 'Unsynchronised lyrics/text transcription', ID: "USLT":
    Text encoding        $xx
    Language             $xx xx xx
    Content descriptor   (text string according to encoding) $00 (00)
    Lyrics/text          (full text string according to encoding)

つまり、USLT フレームは単なるテキスト フレームではなく、それを解析しようとしているのです。比較すると、テキスト フレームは次のようになります。

Header for 'Text information frame', ID: "T000" - "TZZZ" excluding "TXXX":
    Text encoding                $xx
    Information                  (text string(s) according to encoding)

USLT フレームの余分なフィールドに注意してください。カスタム フレーム クラス (ID3v2LyricsFrameData など) が必要です。

ただし、USLT フレームはコメント フレーム (COMM) に非常に似ているため、おそらくこのコードの一部を再利用できます。おそらく、ID3v2CommentFrameData と ID3v2LyricsFrameData の両方を拡張するスーパークラスを作成します。

于 2013-01-23T22:11:44.953 に答える