現在、次のコマンドを使用して、いくつかの.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
オプションの有無にかかわらず使用してみましたが、それでも機能しません。
私は何が間違っているのですか?
入力では、メタデータはファイル/コンテナレベルでは保存されません( Oggメタデータ 少し混乱しているようです)が、ストリームレベルでは、最初のストリーム内に( Vorbisコメント として) =)。
出力形式では、MP3メタデータ(ID3タグ)は決してストリームごとではなく、ファイルごとのみです。 ffmpegは、オーディオストリーム用にコピーしたすべてのメタデータを表示しますが、MP3ファイルに保存することはできません。 (1つのフレームがどのように表示されるかに注意してくださいdoes store、TSSE
、ファイルレベルで表示されます。)
使用 -map_metadata 0:s:0
Ogg/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
フレームにマップされることに注意してください。これは、foobar2000の場合でも、iTunesではおそらくまったく表示されません。)