ฉันจะใช้คำสั่งใดในการแปลงไฟล์วิดีโอ mp4 หรือ mv4 เป็น gif แบบเคลื่อนไหวและในทางกลับกัน นั่นคือแปลงภาพเคลื่อนไหว gif เป็น mp4 หรือ mv4
ฉันจะใช้คำสั่งใดในการแปลงไฟล์วิดีโอ mp4 หรือ mv4 เป็น gif แบบเคลื่อนไหวและในทางกลับกัน นั่นคือแปลงภาพเคลื่อนไหว gif เป็น mp4 หรือ mv4
คำตอบ:
นี่คือสิ่งที่ทำงานสำหรับฉัน:
ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4
movflags - ตัวเลือกนี้ปรับโครงสร้างของไฟล์ MP4 ให้เบราว์เซอร์สามารถโหลดได้เร็วที่สุด
pix_fmt - วิดีโอ MP4 เก็บพิกเซลในรูปแบบที่แตกต่างกัน เรามีตัวเลือกนี้เพื่อระบุรูปแบบเฉพาะซึ่งมีความเข้ากันได้สูงสุดกับเบราว์เซอร์ทั้งหมด
vf - วิดีโอ MP4 ที่ใช้ H.264 จำเป็นต้องมีขนาดที่สามารถหารด้วย 2 ตัวเลือกนี้ช่วยให้มั่นใจได้ว่าเป็นอย่างนั้น
ที่มา: http://rigor.com/blog/2015/12/optimizing-animated-gifs-with-html5-video
scale
ด้วยcrop
) เนื่องจากคุณจะตัดได้เพียง 1 พิกเซลเท่านั้น การขยายอาจทำให้สิ่งต่าง ๆ เบลอ
ในกรณีของฉันการใช้ffmpeg
เคล็ดลับนั้นโดยตรงและให้ผลลัพธ์ที่ดีที่สุด:
$ ffmpeg -f gif -i infile.gif outfile.mp4
อีกวิธีในการแปลงภาพเคลื่อนไหว GIF เป็นวิดีโอ:
ffmpeg -i your_gif.gif -c:v libvpx -crf 12 -b:v 500K output.mp4
-crf ค่าสามารถไปจาก 4 ถึง 63 ค่าที่ต่ำกว่าหมายถึงคุณภาพที่ดีขึ้น -b: v เป็นบิตเรตสูงสุดที่อนุญาต หมายถึงคุณภาพที่สูงขึ้น
หากคุณต้องการสร้างเอาต์พุตใน"n ลูป"ดูวิธีแก้ปัญหานี้ในนัดเดียว
ลองเปลี่ยนnormal.gifเป็นloop.mp4
สำหรับตัวอย่างภาพยนตร์ 2 ลูป:
ffmpeg -stream_loop 2 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y
สำหรับตัวอย่างภาพยนตร์ 5 ลูป:
ffmpeg -stream_loop 5 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y
ระวังตัว: มี[ -yสำหรับการเขียนทับ]
ffmpeg
คำสั่งแรกโดยไม่ต้องใช้ -y
คุณจะมีโอกาสน้อยมากที่จะเขียนทับสิ่งที่คุณไม่ต้องการโดยบังเอิญ ( อาจเป็นวิธีที่ffmpeg
จะไปป์วิดีโอลงในตัวเองและทำสิ่งนี้ในคำสั่ง
รุ่น MacO มีดังต่อไปนี้:
$ ffmpeg -i input.avi -pix_fmt yuv420p output.mp4