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

入力では、メタデータはファイル/コンテナレベルで保存されません(Ogg メタデータ少し混乱しているように見えますが、ストリームレベルでは、1番目のストリーム内で(Vorbisコメント)。

出力フォーマットでは、MP3メタデータ(ID3タグ)は一度もないストリームごとにではなく、ファイルごとにのみ。ffmpegはオーディオストリームにコピーしたすべてのメタデータを表示しますが、MP3ファイルには保存できません。(1つのフレームがするストア、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 で認識されないフィールドは ID3 フレームにマッピングされますがTXXX、iTunes ではおそらくまったく表示されませんが、foobar2000 では表示される可能性があります。)

関連情報