web-dev-qa-db-ja.com

ffmpegを使用してメタデータをファイル間でコピーする

Ffmpegを使用して、ビデオのコアアスペクト(フレームレート、解像度)に関連付けられていないすべてのメタデータを1つのビデオから別のビデオにコピーしたいと思います。単一のコマンドでこれを行う簡単な方法はありますか?

17
David

-map_metadataを使用します。

この例では、グローバルメタデータとストリームメタデータがin0.mkvからコピーされます。ビデオおよびオーディオストリームは、in1.mkvからコピーされたストリームです。

ffmpeg -i in0.mkv -i in1.mkv -map 1 -c copy \
# copies all global metadata from in0.mkv to out.mkv  
-map_metadata 0 \
# copies video stream metadata from in0.mkv to out.mkv
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from in0.mkv to out.mkv
-map_metadata:s:a 0:s:a \
out.mkv

これは次のような結果になります:

Output #0, matroska, to 'out.mkv':
  Metadata:
    title           : Global Title
    AUTHOR          : Global Author
    Stream #0:0: Video: h264
    Metadata:
      title           : Stream 0 Title
    Stream #0:1: Audio: vorbis
    Metadata:
      title           : Stream 1 Title

デフォルトでは、グローバルメタデータは最初の入力ファイルからコピーされるため、-map_metadata 0はおそらく省略できます。

19
llogan