Menggunakan ffmpeg untuk menyalin metadata dari satu file ke file lainnya

17

Saya ingin menggunakan ffmpeg untuk menyalin semua data meta yang tidak terkait dengan aspek inti video (frame rate, resolusi) dari satu video ke video lainnya. Apakah ada cara sederhana untuk melakukan ini dengan satu perintah?

David
sumber

Jawaban:

19

Gunakan -map_metadata.

Dalam contoh ini metadata global dan aliran akan disalin dari in0.mkv. Streaming video dan audio akan disalin dari 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

Ini akan menghasilkan sesuatu seperti:

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

Secara default metadata global disalin dari file input pertama, jadi -map_metadata 0mungkin bisa dihilangkan.

llogan
sumber
1
Jika video sumber Anda adalah file .mov, Anda juga perlu menambahkan tanda -movflags use_metadata_tagsatau video output tidak akan mengandung metadata.
Mastergalen
-3

Jika yang Anda butuhkan adalah dasar-dasarnya (tanggal pembuatan, dll.), Lalu sentuh -r FILE1 FILE2 Akan berfungsi sebagai metadata penanggulangan pesona dari FILE1 hingga FILE2

Emiliano
sumber
Jika Anda membaca pertanyaan, tujuannya adalah data meta video, bukan meta data file.
fixer1234