為什麼ffmeg不寫id3標籤?

為什麼ffmeg不寫id3標籤?

.ogg我目前使用以下命令透過管道傳輸多個文件ffmpeg

for x in *.ogg; do ffmpeg -i "$x" -ab 320k -write_id3v2 1 "`basename "$x" .ogg`.mp3"; done

它可以工作並列印以下訊息

Output #0, mp3, to '10 Ft. Ganja Plant_Bass Chalice_10_Bass Chalice.mp3':
  Metadata:
    TSSE            : Lavf57.83.100
    Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp, 320 kb/s
    Metadata:
      TITLE           : Bass Chalice
      ARTIST          : 10 Ft. Ganja Plant
      GENRE           : Reggae
      DATE            : 2005
      ALBUM           : Bass Chalice
      track           : 10
      encoder         : Lavc57.107.100 libmp3lame

但是當我將檔案載入到 iTunes 中時,id3 標籤不存在。

我嘗試使用它和不使用該-write_id3v2 1選項,但它仍然不起作用。

我究竟做錯了什麼?

答案1

在您的輸入中,元資料不會儲存在檔案/容器層級(奧格元數據看起來有點亂)但在流級別,在第一個流內(作為沃比斯評論)。

在您的輸出格式中,MP3 元資料(ID3 標籤)是絕不每個流但僅限每個文件。儘管 ffmpeg 顯示它為音訊流複製的所有元數據,但它無法將任何元數據儲存在 MP3 檔案中。 (注意一幀是如何store, TSSE, 顯示在檔案層級。

使用 將-map_metadata 0:s:0Ogg/Vorbis 佈局正確轉換為 MP3。正如在手冊頁:

   -map_metadata[:metadata_spec_out] infile[:metadata_spec_in]
   (output,per-metadata)

       [...]

       For example to copy metadata from the first stream of the input file to
       global metadata of the output file:

               ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3

       To do the reverse, i.e. copy global metadata to all audio streams:

               ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv

(請注意,ffmpeg 無法識別的字段將映射到 ID3TXXX幀,iTunes 可能根本不會顯示,但 foobar2000 可能會顯示。)

相關內容