web-dev-qa-db-ja.com

FFmpegを使用したメタデータのダンプ/ロード(WMAからMP3)

WMAメタデータをMP3ID3タグに変換する必要があります。 FFmpegはそれらをファイルにダンプし、実装されたマッパーを使用して別のファイルにロードできるはずです。しかし、使用法の構文が見つかりません:

http://ffmpeg.org/ffmpeg.html#Metadata

FFmpegを使用してファイルを直接変換することはできません。これは、ファイルの1%で失敗するためです。これは、何千ものファイルにとって重要です。いくつかのエラー:

ff asf bad header 0  at:264993
[asf @ 0046DA60] ff asf skip 2252 (unknown stream)
[asf @ 0046DA60] ff asf bad header 0  at:267254
[mp3 @ 0003DA60] max_analyze_duration 5000000 reached at 5015510
Truncating packet of size 1024 to 563
[mp3 @ 0171b0c0] Header missing
get_buffer() failed
Error while decoding stream #0:0

Mplayerを使用してWAVに変換し、LAMEを使用してWAVからMP3に変換できましたが、その過程でメタデータが失われました。

回避策についてはまだ決めていませんが、mplayerを使用せず、ffmpegを使用します。大胆にファイルの波を分析/表示したところ、3種類のエラーを処理しているようです。

  1. get_buffer()failedストリーム#0:0のデコード中にエラーが発生しました[バグの98%]:
    • 「切り捨てられたフェードアウト」ファイルの終了またはフレームの欠落が原因のようです
    • それは聞くことができず、mp3ファイルは大丈夫のようです
  2. ff asfスキップ、不正なヘッダー、切り捨て、.. [バグの2%のみ]:
    • ファイルが何らかの方法で壊れているが、常に聞くことができるとは限らない
    • それらのほんの一部には、クラッキングノイズのマイクロギャップが含まれています
  3. max_analyze_durationに達しました、ヘッダーがありません[警告のみ]:
    • 非常にまれですが、ヘッダーが間違って終了しているか、ヘッダーが大きいことが原因である可能性があります(写真が含まれているなど)
    • 結果ファイルは聞いても大丈夫です

Mplayerはffmpegを使用しており、バグを無視しているようです。他のエラーを失敗させたまま、get_buffer()エラーをおそらく無視します。

4
Jan Suvak

次の方法でメタデータをダンプできます。

ffmpeg -i in.mov -f ffmetadata metadata.txt  

次のようなメタデータをインポートできます(これを試したことがない):

ffmpeg -i in.mov -i metadata.txt -map_metadata 1 -c:a copy -id3v2_version 3 

ソース: http://jonhall.info/how_to/create_id3_tags_using_ffmpeg

3
iphonedroid