หมายเหตุ:ฉันได้รับการปรับปรุงตั้งแต่ffmpeg
ก่อนหน้านี้ (ก่อนหน้านี้ฉันมีรุ่นล้าสมัยavconv
จากที่เก็บ Ubuntu)
ตอนนี้ @ slhck -map_metadata -1
ทำงานได้อย่างสมบูรณ์แบบ
ฉันแนะนำวิธีการแก้ปัญหาของ @ slhckเพราะพิมพ์น้อยและทันสมัย ฉันจะออกจากที่นี่สำหรับทุกคนที่ใช้รุ่นที่ล้าสมัย
วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการตั้งค่า-map_metadata
ให้ใช้หนึ่งในสตรีมอินพุตแทนที่จะใช้เมทาดาทาส่วนกลาง 99% ของเวลานี้ควรได้ผล หมายเหตุ: ฉันใช้ avconv เพราะอยู่ในที่เก็บ Ubuntu 12.04; นี่อาจจะเป็นแบบหล่นเข้ากันได้กับ ffmpeg เนื่องจากไวยากรณ์ของพวกเขาอยู่ในประสบการณ์ของฉันเสมอ
avconv -i input.mp4 -map 0 -map_metadata 0:s:0 -c copy output.mp4
นี่จะใช้เมตะดาต้าจากสตรีมข้อมูลแรก (โดยปกติคือสตรีมวิดีโอ) และใช้เพื่อแทนที่เมทาดาทาส่วนกลางของไฟล์คอนเทนเนอร์ วิธีนี้ใช้งานได้เป็นส่วนใหญ่สตรีมข้อมูลไม่มีข้อมูลเมตาที่มีความหมายเขียนถึงพวกเขา อย่างไรก็ตามบางครั้งพวกเขาก็ทำและคุณต้องการกำจัดข้อมูลเมตานั้นอย่างสมบูรณ์ น่าเสียดายที่วิธีเดียวที่ฉันสามารถทำได้คือใช้ไพพ์และกระบวนการ avconv สองกระบวนการ
avconv -i input.mp4 -f wav - | avconv -i - -i input.mp4 -map 1 -map_metadata 0 -c copy output.mp4
สิ่งนี้ใช้ประโยชน์จากข้อเท็จจริงที่ว่าไฟล์ WAV ไม่สามารถมีเมทาดาทาได้ (เนื่องจากมีการสร้างรูปแบบก่อนที่จะมีเมตาแท็กอยู่)
วิธีการทั้งสองนี้ทำให้ข้อมูลเมตาทั้งหมดในไฟล์ที่ฉันเพิ่งทดสอบเป็นข้อมูลทั้งหมดที่exiftool
รายงานเป็นข้อมูลตัวแปลงสัญญาณและ avprobe รายงานว่าไม่มีข้อมูลเมตาสำหรับฉัน การใช้ไพพ์สำหรับวิธีนี้ค่อนข้างน่าเกลียดและวิธีแรกจะใช้งานได้ใน 99% ของเคสดังนั้นควรเลือกใช้
mov
หรือmp4
ไฟล์วันที่สร้างเป็นฟิลด์จำนวนเต็มในส่วนหัวภาพยนตร์และหัวติดตาม (แสดงเป็นวินาทีตั้งแต่ปี 1904) แม้ว่าคุณสามารถตั้งค่าเป็น 0 หรือค่าคงที่อื่น ๆ แต่ก็ไม่มีวิธีที่จะลบออกและยังคงมีไฟล์mov
หรือmp4
ไฟล์ที่ถูกต้อง