diff options
author | Jun Zhao <barryjzhao@tencent.com> | 2020-04-20 10:59:39 +0300 |
---|---|---|
committer | Jun Zhao <barryjzhao@tencent.com> | 2020-04-29 10:14:17 +0300 |
commit | 280383a8975bf04f7d05caf55fae75bbff71b347 (patch) | |
tree | d46d8fc3d239b0953e224bf34716481711e0c27f /libavformat | |
parent | a9029703bb1a8272fa7e2fd33393c273e5ad7ff6 (diff) |
lavf/mp3enc: fix ID3v1 year metadata setting issue
Follow the http://id3.org/ID3v1, setting the year metadata
for ID3v1.
fix #8623
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/mp3enc.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index 34b753ffa0..14d4b6e0af 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -45,6 +45,7 @@ static int id3v1_set_string(AVFormatContext *s, const char *key, return !!tag; } +// refer to: http://id3.org/ID3v1 static int id3v1_create_tag(AVFormatContext *s, uint8_t *buf) { AVDictionaryEntry *tag; @@ -58,7 +59,17 @@ static int id3v1_create_tag(AVFormatContext *s, uint8_t *buf) count += id3v1_set_string(s, "TIT2", buf + 3, 30 + 1); //title count += id3v1_set_string(s, "TPE1", buf + 33, 30 + 1); //author|artist count += id3v1_set_string(s, "TALB", buf + 63, 30 + 1); //album - count += id3v1_set_string(s, "TDRC", buf + 93, 4 + 1); //date + if ((tag = av_dict_get(s->metadata, "TYER", NULL, 0))) { //year + av_strlcpy(buf + 93, tag->value, 4 + 1); + count++; + } else if ((tag = av_dict_get(s->metadata, "TDRC", NULL, 0))) { + av_strlcpy(buf + 93, tag->value, 4 + 1); + count++; + } else if ((tag = av_dict_get(s->metadata, "TDAT", NULL, 0))) { + av_strlcpy(buf + 93, tag->value, 4 + 1); + count++; + } + count += id3v1_set_string(s, "comment", buf + 97, 30 + 1); if ((tag = av_dict_get(s->metadata, "TRCK", NULL, 0))) { //track buf[125] = 0; |