แทนที่ GIF แบบเคลื่อนไหวด้วยวิดีโอเพื่อให้โหลดหน้าเว็บได้เร็วขึ้น

ฮูเซน จอร์เดห์
ฮูสเซน จอร์เดห์
เจเรมี แวกเนอร์
เจเรมี แวกเนอร์

คุณเคยเห็น GIF แบบเคลื่อนไหวในบริการอย่าง Imgur หรือ Gfycat ซึ่งตรวจสอบในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์เพื่อดูว่า GIF นั้นเป็นวิดีโอจริงๆ ไหม ซึ่งมีเหตุผลที่ดี GIF แบบเคลื่อนไหวอาจใหญ่ตั้งตรงได้

แผงเครือข่ายของเครื่องมือสำหรับนักพัฒนาเว็บแสดง GIF ขนาด 13.7 MB

โชคดีที่นี่เป็นหนึ่งในประสิทธิภาพในการโหลดที่คุณสามารถ ทำงานเพียงเล็กน้อยเพื่อให้ได้รับผลประโยชน์ที่ยิ่งใหญ่ การแปลง GIF ขนาดใหญ่เป็นวิดีโอ จะช่วยประหยัดแบนด์วิดท์ของผู้ใช้ได้มาก

วัดก่อน

ใช้ Lighthouse เพื่อตรวจสอบเว็บไซต์เพื่อหา GIF ที่แปลงเป็นวิดีโอได้ ในเครื่องมือสำหรับนักพัฒนาเว็บ ให้คลิกแท็บ "การตรวจสอบ" และเลือกช่องทำเครื่องหมาย "ประสิทธิภาพ" จากนั้นเรียกใช้ Lighthouse และตรวจสอบรายงาน หากคุณมี GIF ที่สามารถแปลงได้ คุณควรเห็นคำแนะนำ "ใช้รูปแบบวิดีโอสำหรับเนื้อหาภาพเคลื่อนไหว"

การตรวจสอบ Lighthouse ที่ล้มเหลว โปรดใช้รูปแบบวิดีโอสำหรับเนื้อหาภาพเคลื่อนไหว

สร้างวิดีโอ MPEG

การแปลง GIF เป็นวิดีโอทำได้หลายวิธี โดย FFmpeg เป็นเครื่องมือที่ใช้ในคู่มือนี้ หากต้องการใช้ FFmpeg เพื่อแปลง GIF my-animation.gif เป็นวิดีโอ MP4 ให้เรียกใช้คำสั่งต่อไปนี้ในคอนโซลของคุณ

ffmpeg -i my-animation.gif -b:v 0 -crf 25 -f mp4 -vcodec libx264 -pix_fmt yuv420p my-animation.mp4

การดำเนินการนี้จะบอกให้ FFmpeg ใช้ my-animation.gif เป็นอินพุตที่แสดงโดยแฟล็ก -i และแปลงเป็นวิดีโอชื่อ my-animation.mp4

โปรแกรมเปลี่ยนไฟล์ libx264 ใช้งานได้กับไฟล์ที่มีขนาดเท่ากันเท่านั้น เช่น 320 x 240 พิกเซล หาก GIF ที่อินพุตมีขนาดผิดเพี้ยน คุณสามารถใส่ตัวกรองการครอบตัด เพื่อหลีกเลี่ยงไม่ให้ FFmpeg แสดงข้อผิดพลาด "ความสูง/ความกว้างไม่หารด้วย 2"

ffmpeg -i my-animation.gif -vf "crop=trunc(iw/2)*2:trunc(ih/2)*2" -b:v 0 -crf 25 -f mp4 -vcodec libx264 -pix_fmt yuv420p my-animation.mp4

สร้างวิดีโอ WebM

แม้ว่า MP4 จะมีมาตั้งแต่ปี 1999 แต่ WebM เป็นรูปแบบไฟล์ที่ค่อนข้างใหม่ซึ่งเปิดตัวครั้งแรกในปี 2010 วิดีโอ WebM มีขนาดเล็กกว่าวิดีโอ MP4 มาก แต่ไม่ใช่ทุกเบราว์เซอร์ที่รองรับ WebM ดังนั้นจึงเหมาะกับการสร้างวิดีโอทั้ง 2 แบบ

หากต้องการใช้ FFmpeg เพื่อแปลง my-animation.gif เป็นวิดีโอ WebM ให้เรียกใช้คำสั่งต่อไปนี้ในคอนโซลของคุณ

ffmpeg -i my-animation.gif -c vp9 -b:v 0 -crf 41 my-animation.webm

เปรียบเทียบความแตกต่าง

การประหยัดค่าใช้จ่ายระหว่างไฟล์ GIF และวิดีโอได้ค่อนข้างมาก

การเปรียบเทียบขนาดไฟล์ที่แสดง 3.7 MB สำหรับ gif, 551 KB สำหรับ mp4 และ 341 KB สำหรับ Webm

ในตัวอย่างนี้ GIF เริ่มต้นมีขนาด 3.7 MB เมื่อเทียบกับเวอร์ชัน MP4 ซึ่งมีขนาด 551 KB และเวอร์ชัน WebM มีขนาดเพียง 341 KB

แทนที่รูปภาพ GIF ด้วยวิดีโอ

GIF แบบเคลื่อนไหวมีลักษณะสำคัญ 3 ประการที่วิดีโอต้องทำซ้ำดังนี้

  • วิดีโอจะเล่นโดยอัตโนมัติ
  • วนซ้ำอย่างต่อเนื่อง (โดยปกติ แต่ก็สามารถป้องกันการวนซ้ำได้)
  • พวกนั้นจะเงียบ

โชคดีที่คุณสร้างพฤติกรรมเหล่านี้ขึ้นใหม่ได้โดยใช้องค์ประกอบ <video>

<video autoplay loop muted playsinline></video>

องค์ประกอบ <video> ที่มีแอตทริบิวต์เหล่านี้จะเล่นโดยอัตโนมัติ วนซ้ำไม่สิ้นสุด ไม่เล่นเสียง และเล่นแทรกในบรรทัด (ไม่ใช่แบบเต็มหน้าจอ) ซึ่งเป็นลักษณะการทำงานของลักษณะสัญลักษณ์ทั้งหมดที่คาดหมายของ GIF แบบเคลื่อนไหว 🎉

สุดท้ายนี้ องค์ประกอบ <video> ต้องมีองค์ประกอบย่อย <source> อย่างน้อย 1 รายการซึ่งชี้ไปยังไฟล์วิดีโอต่างๆ ที่เบราว์เซอร์จะเลือกได้ ทั้งนี้ขึ้นอยู่กับการรองรับรูปแบบของเบราว์เซอร์ จัดเตรียมทั้ง WebM และ MP4 เพื่อที่ว่าหากเบราว์เซอร์ไม่รองรับ WebM เบราว์เซอร์นั้นจะสามารถกลับไปใช้ MP4 ได้

<video autoplay loop muted playsinline>
  <source src="my-animation.webm" type="video/webm">
  <source src="my-animation.mp4" type="video/mp4">
</video>

ผลกระทบต่อการแสดงผลเนื้อหาขนาดใหญ่ที่สุด (LCP)

โปรดทราบว่าขณะที่องค์ประกอบ <img> เป็นตัวเลือกสำหรับ LCP แต่องค์ประกอบ <video> ที่ไม่มีรูปภาพ poster จะไม่ใช่ตัวเลือก LCP วิธีแก้ปัญหาในกรณีการเลียนแบบ GIF แบบเคลื่อนไหวคือไม่ต้องเพิ่มแอตทริบิวต์ poster ลงในองค์ประกอบ <video> เพราะระบบจะนำรูปภาพนั้นไปใช้ไม่ได้

ผลกระทบต่อเว็บไซต์ของคุณ ขอแนะนำให้ใช้ <video> แทน GIF แบบเคลื่อนไหว แต่เนื่องจากเข้าใจว่าสื่อดังกล่าวไม่ใช่ตัวเลือกของ LCP และจะใช้ตัวเลือกที่ใหญ่ที่สุดในลำดับถัดไปแทน เนื่องจาก GIF และ <video> มักมีขนาดใหญ่ขึ้นและดาวน์โหลดได้ช้ากว่า การเปลี่ยนไปใช้ตัวเลือก LCP อื่นจึงมีแนวโน้มที่จะช่วยปรับปรุง LCP ของเว็บไซต์ด้วย