簡體   English   中英

如何阻止 ffmpeg 操縱 mp3 元數據?

[英]How to stop ffmpeg from manipulating mp3 metadata?

我正在使用 ffmpeg 來更改我的 mp3 文件的比特率。 它運作良好,但有一件事非常令人沮喪。

ffmpeg 會自動更改一些元數據字段。 具體來說,它將 ID3v2.3 轉換為 ID3v2.4,但它做錯了。 例如,它寫入了TYER中實際不存在的 TYER 字段。 但最令人沮喪的是,它將USLT字段轉換為lyrics-LANGCODE (如lyrics-eng )。 大多數音樂播放器不識別此標簽!

我不希望 ffmpeg 弄亂元數據字段。 我只是想讓它改變比特率。 有沒有告訴 ffmpeg 它不應該觸及任何元數據字段?

我在 Windows 64 位上運行 ffmpeg 4.0.2。 選項是:

ffmpeg -i input.mp3 -codec:a libmp3lame -b:a 128k output.mp3

不, -id3v2_version 3沒有幫助。 它糾正了TYER問題,但不是歌詞問題。

我無法用ffmpeg解決歌詞問題,但能夠將歌詞從LYRICS-ENG元數據字段復制到USLT字段。
我使用Mp3tag工具批量復制數據。
它具有用於批處理操作的操作功能。

我做了什么:

  • 動作 -> 動作
  • 新建 -> 新建 -> 格式值
  • “字段”:UNSYNCEDLYRICS,“格式字符串”:%LYRICS-ENG%
  • 導航到包含文件的文件夾,選擇它們並執行創建的操作

我在 ffmpeg 和這個問題的第一個答案之間混合使用:由於下面的 cmd 循環,我首先轉換了一個完整的文件文件夾(在這種情況下將 .flac 文件轉換為 .mp3)。 現在我正在改變我整個 iTunes 資料庫的比特率,以減少它的位置,而 ffmpeg 確實改變了歌詞的標簽。 但是使用 mp3tag 並創建此操作允許我將它們切換回 iTunes 知道的標簽。 這是一種非常快速的方法,我找了很長時間!

FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -ab 320k -acodec mp3 "3%~nG.mp3"

我很確定我已經找到了解決歌詞問題的方法...

$ ffmpeg -i input.mp3 ... -metadata "lyrics-eng=" -metadata "unsyncedlyrics=eng||{lyrics}" output.mp3

-metadata "lyrics-eng="防止設置不正確的元數據,而-metadata "unsyncedlyrics=eng||{lyrics}"設置正確的元數據,希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM