Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> ซอฟต์แวร์

แปลงวิดีโอเป็น GIF คุณภาพสูงได้ง่ายด้วย ffmpeg

Advanced memelogy - แปลงวิดีโอเป็น HD GIF

อัปเดต: 23 สิงหาคม 2567

สัปดาห์ที่แล้วผมบอกปัญหา "ส่งวิดีโอไม่ได้" ใน WhatsApp อยากแชร์ memes ด้วยเพื่อน เทคโนโลยีกีดขวาง ผมอธิบายวิธี繞ทาง - ส่ง HD videos แต่ถ้ามีแค่ SD content ทำไง? บนโทรศัพท์ไม่ได้ง่าย แตบนเดสก์ท็อปมีตัวเลือกหลายอย่าง

วันนี้ revisit เครื่องมือตัดต่อสื่อเก่าและเก่ง - ffmpeg ร้านเดียวจบสำหรับ audio/video ทำอะไรกับไฟล์สื่อได้หมด แปลงฟอร์แมต ตัด/ต่อ clips scale ดึงเฟรม เพิ่มซับทายทูล เปลี่ยนความเร็วเล่น และอีกมาก มาพูดถึงการแปลงวิดีโอเป็น GIF แอนิเมท

แปลงวิดีโอเป็น GIF คุณภาพสูงได้ง่ายด้วย ffmpeg

ทำไมต้องทำนี้?

เหมือนที่กล่าว อาจมีปัญหาแชร์วิดีโอเพื่อน ไม่ว่าจะข้อจำกัดทางเทคนิคในโปรแกรม/แอป ใดๆ อาจสนใจแค่วิดีโอ (ไม่มีออดิโอ) และเจอข้อจำกัดขนาด/ฟอร์แมต อาจอยาก embed clips ในแชท แทนที่จะส่งเป็นไฟล์ดาวน์โหลด เพราะ embed ให้ประสบการณ์ meme เรียบง่ายกว่า

นี่นำไปสู่การสำรวจว่าทำได้อะไรกับคลิปวิดีโอ ถ้ามี SD content ยัง transcode เป็น HD ได้ ไม่มีปัญหา แปลงวิดีโอเป็น GIF ได้ แต่ default conversion อาจไม่สวย จบได้ low-res, non-looping files ขัดกับหลักการ memeology ที่เคารพ

มาดูต่อกัน แปลงไฟล์วิดีโอ (MP4, MOV) เป็น GIF...

คำสั่ง ffmpeg

วิธี "ง่ายที่สุด" โดยไม่ใช้พอร์ทัลออนไลน์หรือดาวน์โหลดแอปแปลกๆ บนโทรศัพท์ คือใช้ ffmpeg utility ฟรี open-source (บนเดสก์ท็อป) Linux user ติดตั้งจาก repos ได้เลย Windows user ดาวน์โหลด executables จากเว็บ official

ffmpeg -i [input] -vf "fps=XX,scale=YYYY:-1:flags=lanczos" -loop 0 [output]

ตัวอย่างเฉพาะเจาะจง:

ffmpeg -i Test.mov -vf "fps=24,scale=1920:-1:flags=lanczos" -loop 0 Test.gif

อธิบาย:

  • -i ระบุชื่อไฟล์ input วิดีโอที่จะแปลง
  • -vf ระบุ video options สำหรับการแปลง
  • fps=XX กำหนด frame rate พยายาม match กับวิดีโอต้นฉบับ เพื่อไม่ให้ drop frames หรือ interpolation ถ้าวิดีโอ 24FPS ใช้ 24 ไม่บังคับ แต่อาจทำให้ GIF เล่นช้าหรือเร็วกว่าต้นฉบapun (เว้นแต่ระบุ frame transition speed อื่น)
  • scale=YYYY:-1 ขยาย/ย่อวิดีโอ สร้าง HD content ได้ ระบุทั้งความสูงและกว้าง หรือระบุอย่างเดียว ให้ ffmpeg scale อีกด้าน proportionally (-1) ตัวอย่างผมแปลงวิดีโอเป็น HD GIF กว้าง 1920px ความสูงจะ match สัดส่วนต้นฉบับ ถ้าบันทึก 16:9 ความสูงจะเป็น 1080px หรือทำทางกลับกัน ควรใช้ขนาดเล็กกว่า เช่น 320px หรือ 640px จะเห็นเหตุผลทีหลัง
  • flags กำหนดอัลกอริทึม scaling (เหมือนใน GIMP) มีอะไรทำได้เยอะ รวมการ manipulate color channels แต่ default พอใช้ได้ ลอง lanczos, neighbor, bicubic ฯลฯ
  • -loop 0 บอก ffmpeg สร้าง GIF loop แบบ infinite
  • สุดท้ายคือชื่อ output

ปล่อย ffmpeg รัน งานเสร็จ Thumbnails ดูได้ นี่ไม่แสดง "action" ทั้งหมด ไม่ว่าจะวิดีโอหรือ GIF แต่มีเหตุผลใหญ่

แปลงวิดีโอเป็น GIF คุณภาพสูงได้ง่ายด้วย ffmpeg

แปลงวิดีโอเป็น GIF คุณภาพสูงได้ง่ายด้วย ffmpeg

เหตุผล? ขนาดไฟล์ วิดีโอต้นฉบับ 5 วินาที หนัก 3.5 MB GIF หนัก 61.5 MB! ลองคลิปอื่น ผลต่างน้อยลง 86 vs 152 MB ขึ้นกับข้อมูลในคลิป ไม่ได้แนบ artifacts เพราะจะกิน bandwidth มากเกินไป เคล็ดลับ: มีวิธีรอบข้าง แต่จะคุยแยก

แต่นี่ เราทำได้แล้ว งานเสร็จ memeification complete

สรุป

Ffmeg เครื่องมือซับซ้อนและมีประโยชน์อย่างน่ากลัว ด้วย 5,000 flags และ options ประมาณ ทำอะไรก็ได้ ต้องการความอดทนและ tenancy (sic) แต่เรื่อง audio/video ไม่ต้องมองที่อื่น นั่นแหละ วันนี้เราต้องการ GIF สดๆ และได้แล้ว

ข้อเสนอข้างต้นช่วยให้คุณเป็น memeista ที่เคารพมากขึ้น ควรช่วยสร้างเนื้อหาคุณภาพสูง หลักการแปลงเหมือนกัน ไม่ว่าจะ input/output formats ไหน ถ้าต้องการ HD video จาก SD video (พูดแบบนั้น) ก็ได้ ผมคิด GIF จะเป็นตัวเลือก avant-garde กว่า สำหรับสิ่งที่มีค่า หวังว่าเป็นประโยชน์ ตอนนี้เราจะมีอีกบทความเกี่ยวกับ GIF memeing ครอบคลุมวิธีสร้าง gif ทุกอย่าง ข้อดีข้อเสีย เร็วๆ นี้ Dank away.

Cheers.