Ffmpeg - 如何从 mp3 音轨输出中仅删除一个标签?

Ffmpeg - 如何从 mp3 音轨输出中仅删除一个标签?

我需要从输出曲目中删除歌词标签。
曲目信息:

Stream mapping:
  Stream #0:1 -> #0:0 (copy) 
  Stream #0:0 -> #0:1 (mp3 (mp3float) -> mp3 (libmp3lame))  
Output #0, mp3, to 'D:\My_music\Music_no_lyrics.mp3':
  Metadata:
    TIT2        : Music

    lyrics-eng  :                            _
                :                             |
                :                             |
                :                             |  I want remove this tag
                :                             |
                : musics.org                 _|    
                                             
     TALB       : Classic Musics
     TCON       : Classic
     TPE1       : Music
     TSSE       : Lavf59.17.102

我的命令:

ffmpeg -hide_banner -i "D:\My_music\Music.mp3" -c:v copy -id3v2_version 3 -metadata lyrics-eng="" -acodec mp3 -b:a 320 -ar:a 44100 "D:\My_music\Music_no_lyrics.mp3"

我怎样才能做到这一点?

答案1

这有点复杂。问题是你想完全删除标签,而这是一个自定义标签,因此完全删除需要删除每个标签。

您可以保存当前标签:

ffmpeg -i your_file.mp3 -an -f ffmetadata md_save.txt

这将删除它们:

ffmpeg -i your_file.mp3 -c:a copy -map_metadata -1 your_file_no_tags.mp3

如果您有很多文件需要处理,则需要合并sed或删除自定义标签中的行。如果您的文件不多,则只需在文本编辑器中打开并删除该行即可。awkgreplyrics-engmd_save.txt

然后您可以使用以下命令添加标签:

ffmpeg -i your_file.mp3 -c:a copy -i md_save.txt -map_metadata 1 -id3v2_version 3 your_file_final.mp3

ID3 标签一直都是一场冒险。
希望这能有所帮助!

相关内容