ฉันต้องการใช้ ffmpeg เพื่อคัดลอกข้อมูลเมตาทั้งหมดที่ไม่เกี่ยวข้องกับประเด็นหลักของวิดีโอ (อัตราเฟรม, ความละเอียด) จากวิดีโอหนึ่งไปยังอีก มีวิธีง่ายๆในการทำเช่นนี้ด้วยคำสั่งเดียว?
ฉันต้องการใช้ ffmpeg เพื่อคัดลอกข้อมูลเมตาทั้งหมดที่ไม่เกี่ยวข้องกับประเด็นหลักของวิดีโอ (อัตราเฟรม, ความละเอียด) จากวิดีโอหนึ่งไปยังอีก มีวิธีง่ายๆในการทำเช่นนี้ด้วยคำสั่งเดียว?
คำตอบ:
-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
อาจถูกละเว้น
หากทั้งหมดที่คุณต้องการคือพื้นฐาน (วันที่สร้าง ฯลฯ ) แล้วแตะ -r FILE1 FILE2 จะทำงานเป็นเมตาดาต้าการจัดการเสน่ห์จาก FILE1 ถึง FILE2
-movflags use_metadata_tags
ฉะนั้นวิดีโอเอาต์พุตจะไม่มีข้อมูลเมตา