
私は現在、以下のコマンドを使用して複数の.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: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
、iTunes ではおそらくまったく表示されませんが、foobar2000 では表示される可能性があります。)