ทำไมคลิปวิดีโอเดโมถึงเป็นเรื่องใหญ่สำหรับโปรแกรมเมอร์
เวลาเราสร้างซอฟต์แวร์ขึ้นมาสักตัว สิ่งที่ขาดไม่ได้เลยคือการทำ Demo Video (คลิปวิดีโอสาธิตการใช้งาน) เพื่อให้คนอื่นเห็นภาพว่าโปรแกรมของเราทำอะไรได้บ้าง ไม่ว่าจะเอาไว้แปะบนหน้าเว็บ หรือเอาไปโชว์ใน App Store (ร้านค้าสำหรับดาวน์โหลดแอปพลิเคชัน) หลายคนมักมองข้ามเรื่องขนาดไฟล์ไป จนมารู้ตัวอีกทีก็ตอนที่เว็บเริ่มโหลดช้าจนผู้ใช้งานหนีหายไปหมดแล้ว
ลองนึกภาพตามนะ ถ้าคุณทำคลิปยาว 15 นาทีแล้วไฟล์ใหญ่ถึง 370 MB (หน่วยวัดขนาดข้อมูลดิจิทัล) คนที่เข้ามาดูเว็บคุณผ่านมือถือที่ใช้เน็ตช้าๆ เขาต้องรอโหลดนานแค่ไหน กว่าคลิปจะเล่นได้เขาอาจจะปิดเว็บทิ้งไปก่อนแล้ว นั่นหมายถึงคุณกำลังเสียโอกาสในการเปลี่ยนผู้เข้าชมให้กลายเป็นผู้ใช้งานจริงเพียงเพราะคลิปวิดีโอที่ใหญ่เกินความจำเป็น
ในฐานะนักพัฒนา นี่คือ ต้นทุนแฝง ที่คุณต้องจ่าย ทั้งค่าพื้นที่เก็บข้อมูลบน Server (เครื่องคอมพิวเตอร์แม่ข่ายที่คอยให้บริการข้อมูล) และค่า Bandwidth (ปริมาณข้อมูลที่รับส่งในเครือข่าย) ยิ่งคลิปใหญ่ ค่าใช้จ่ายพวกนี้ก็ยิ่งพุ่งสูงขึ้นตามจำนวนคนที่เข้ามาดู การรู้จักวิธีลดขนาดวิดีโอจึงเป็นทักษะพื้นฐานที่ช่วยให้คุณประหยัดเงินและทำให้โปรเจกต์ของคุณดูเป็นมืออาชีพมากขึ้นตั้งแต่วันแรก
คณิตศาสตร์เบื้องหลังการลดขนาดไฟล์วิดีโอ
หลักการง่ายๆ ของการทำ Video Compression (การบีบอัดวิดีโอให้มีขนาดเล็กลง) คือการตัดส่วนเกินที่ไม่จำเป็นออกโดยที่คนดูยังรู้สึกว่าภาพชัดเจนอยู่ โดยที่เราไม่ต้องทำลายคุณภาพจนดูไม่ได้ การลดขนาดไฟล์ไม่ได้แปลว่าภาพต้องแตกจนมองไม่เห็นตัวอักษร แต่คือการหาจุดสมดุลที่เหมาะสมที่สุด
สมมติว่าคุณมีวิดีโอต้นฉบับขนาด 371 MB ถ้าคุณบีบอัดให้เหลือ 145 MB ได้สำเร็จ คุณไม่ได้แค่ประหยัดพื้นที่เก็บข้อมูลไปกว่าครึ่ง แต่นี่คือการลดภาระให้ CDN (เครือข่ายเซิร์ฟเวอร์ที่ช่วยกระจายไฟล์ให้โหลดเร็วขึ้น) ทุกครั้งที่มีคนกดดูวิดีโอของคุณ ข้อมูลที่ต้องวิ่งผ่านสายเน็ตก็จะลดลงมหาศาลตลอดไป
ความลับคือการเลือกปรับแต่งค่าที่สำคัญ เช่น ความละเอียดของภาพ หรือจำนวนเฟรมต่อวินาที หากวิดีโอของคุณเน้นโชว์การใช้งานโปรแกรม ความละเอียดระดับ 1080p ที่ 24 เฟรมต่อวินาทีก็เพียงพอแล้วสำหรับการดูบนหน้าจอคอมพิวเตอร์หรือมือถือ คุณไม่จำเป็นต้องใช้ไฟล์ต้นฉบับระดับ 4K ที่หนักเกินความจำเป็นเลย
ข้อดีของการบีบอัดวิดีโอแบบ Local
นักพัฒนาหลายคนมักเลือกใช้เครื่องมือออนไลน์ในการลดขนาดไฟล์ แต่การอัปโหลดไฟล์ขนาด 371 MB ขึ้นไปบนเว็บเพื่อบีบอัดนั้นคือการเสียเวลาและเสียเน็ตโดยใช่เหตุ วิธีที่ดีกว่าคือการทำ Local Compression (การประมวลผลลดขนาดไฟล์ภายในเครื่องคอมพิวเตอร์ของเราเอง) ซึ่งช่วยประหยัดเวลาและรักษาความเป็นส่วนตัวได้ดีที่สุด
เมื่อคุณทำทุกอย่างในเครื่องตัวเอง คุณไม่ต้องกังวลเรื่องการอัปโหลดไฟล์ใหญ่ๆ ขึ้นไปบนคลาวด์แล้วนั่งรอให้มันประมวลผลเสร็จ แถมยังไม่ต้องดาวน์โหลดกลับมาอีกรอบ ทุกอย่างจบลงภายในเครื่องของคุณเองด้วยพลังการประมวลผลของ CPU (หน่วยประมวลผลกลางของคอมพิวเตอร์) ที่เรามีอยู่แล้ว
อีกเรื่องที่สำคัญมากคือ ความปลอดภัย ของข้อมูล บางครั้งวิดีโอเดโมอาจจะมีข้อมูลสำคัญหรือหน้าตาฟีเจอร์ที่ยังไม่อยากให้ใครเห็น การเก็บไฟล์ไว้ในเครื่องตัวเองจึงปลอดภัยกว่าการส่งไฟล์ไปฝากไว้บนเว็บของคนอื่น การมีนิสัยรักการจัดการไฟล์ด้วยตัวเองแบบนี้ คือจุดเริ่มต้นของการเป็นโปรแกรมเมอร์ที่ใส่ใจในประสิทธิภาพของระบบ
ตัวอย่างการเขียนสคริปต์เพื่อตรวจสอบไฟล์
ก่อนจะบีบอัด เราควรตรวจสอบข้อมูลไฟล์พื้นฐานก่อน เพื่อให้มั่นใจว่าเรากำลังจัดการกับไฟล์ที่ถูกต้อง การใช้คำสั่งใน Terminal (โปรแกรมสั่งงานด้วยตัวอักษร) จะช่วยให้เราเห็นรายละเอียดเชิงลึกของวิดีโอได้ดีกว่าการดูแค่ขนาดไฟล์เพียงอย่างเดียว
# ตรวจสอบรายละเอียดไฟล์วิดีโอผ่านเครื่องมือ ffprobe
ffprobe -v error -show_entries format=size -of default=noprint_wrappers=1 demo.mp4
# -v error: ให้แสดงเฉพาะข้อความแจ้งเตือนเมื่อเกิดข้อผิดพลาด
# -show_entries: ระบุข้อมูลที่ต้องการดู เช่น ขนาดไฟล์
# -of default: จัดรูปแบบการแสดงผลให้ดูง่าย
คำสั่ง ffprobe เป็นเครื่องมือมาตรฐานที่ใช้ตรวจข้อมูลวิดีโอ บรรทัดนี้จะแสดงผลลัพธ์เป็นขนาดไฟล์แบบ Byte (หน่วยข้อมูลพื้นฐานที่เล็กที่สุด) ออกมาให้เราเห็นทันที ผลลัพธ์ที่ได้จะเป็นตัวเลข เช่น size=389642100 ซึ่งช่วยให้เราคำนวณได้แม่นยำก่อนเริ่มลงมือบีบอัด
การใช้เครื่องมือเหล่านี้ช่วยให้เราไม่ต้องเดาว่าไฟล์ใหญ่แค่ไหน เราสามารถสร้างสคริปต์ (ชุดคำสั่งที่เขียนไว้ให้คอมพิวเตอร์ทำงานตามลำดับ) เล็กๆ เพื่อคอยเช็กขนาดไฟล์ก่อนอัปโหลดขึ้นเซิร์ฟเวอร์ได้เสมอ ซึ่งเป็นวิธีที่นักพัฒนามืออาชีพใช้กันเพื่อคุมคุณภาพของงาน
เลือกเครื่องมือที่ฉลาดและเข้าใจเนื้อหา
หัวใจของการบีบอัดวิดีโอที่ดีคือการใช้ Content-Aware Compression (การบีบอัดที่วิเคราะห์เนื้อหาในวิดีโอ) ซึ่งเป็นการที่ซอฟต์แวร์จะดูว่าส่วนไหนของคลิปมีการเคลื่อนไหวเยอะ ส่วนไหนนิ่ง แล้วจัดสรรคุณภาพให้เหมาะสม ส่วนที่นิ่งอย่างพื้นหลังหรือเมนูโปรแกรมจะถูกลดรายละเอียดลง ส่วนที่สำคัญอย่างการกดเมาส์หรือการพิมพ์โค้ดจะยังคงความคมชัดไว้
เครื่องมือที่ฉลาดจะไม่มีวันทำให้ไฟล์ใหญ่ขึ้นกว่าเดิม หากมันพบว่าไฟล์เดิมถูกบีบอัดมาดีอยู่แล้ว มันจะเลือกเก็บไฟล์ต้นฉบับไว้ให้เรา นี่คือสิ่งที่ช่วยลดความเสี่ยงจากการที่ไฟล์อาจจะเสียคุณภาพหรือขนาดบวมขึ้นโดยไม่ตั้งใจ การเลือกเครื่องมือที่มีหลักการทำงานแบบนี้จะช่วยให้เราประหยัดเวลาได้มาก
ลองมองหาเครื่องมืออย่าง ImgIng หรือซอฟต์แวร์ประเภท Video Encoder (โปรแกรมแปลงรหัสวิดีโอ) ที่รองรับการตั้งค่าคุณภาพแบบระบุเป้าหมายได้ สิ่งเหล่านี้คือการลงทุนระยะยาวสำหรับโปรเจกต์ของคุณ เพราะทุกครั้งที่คุณอัปเดตเดโม คุณจะมั่นใจได้ว่าไฟล์ที่ออกไปนั้นเล็กที่สุดและคุณภาพดีที่สุดเท่าที่จะเป็นไปได้
สรุป: การประหยัดที่ส่งผลต่ออนาคต
การบีบอัดวิดีโอเดโมอาจดูเป็นเรื่องเล็กน้อยที่ไม่มีใครสังเกตเห็น แต่สำหรับโปรแกรมเมอร์ที่ทำโปรเจกต์คนเดียว ทุกเมกะไบต์ที่ลดลงหมายถึงค่าใช้จ่ายที่ลดลงและประสบการณ์ผู้ใช้งานที่ดีขึ้น ลองนำวิธีนี้ไปใช้จริงดูครับ เริ่มจากเดโมวิดีโอชิ้นล่าสุดที่คุณมีอยู่
ขั้นตอนการนำไปใช้ให้เห็นผลจริง:
- ตรวจสอบขนาดไฟล์ต้นฉบับของวิดีโอที่คุณเพิ่งบันทึกมา
- ใช้เครื่องมือบีบอัดแบบ Local โดยตั้งค่าความละเอียดไว้ที่ 1080p และ 24 fps
- เปรียบเทียบขนาดไฟล์ก่อนและหลัง แล้วนำไปอัปโหลดแทนที่ไฟล์เดิมบนเว็บไซต์
การทำสิ่งเล็กๆ ให้มีประสิทธิภาพสูงสุด คือนิสัยของโปรแกรมเมอร์ที่ประสบความสำเร็จ เมื่อคุณทำจนเป็นนิสัย คุณจะพบว่าทุกส่วนของซอฟต์แวร์ที่คุณดูแลจะเริ่มดีขึ้นเรื่อยๆ ทั้งความเร็วในการโหลด ความประหยัดของทรัพยากร และความน่าเชื่อถือของผลงานที่คุณส่งมอบให้กับผู้ใช้งานทุกคน
ที่มา: A 371MB demo video became 145MB locally — the bandwidth math — DEV Community