หน้าเว็บ

วันอังคารที่ 19 พฤษภาคม พ.ศ. 2569

ffmpeg กับ เรื่อง วิดีโอบิตเรต

คำสั่ง -r และการจัดการบิตเรต (Bitrate) ใน ffmpeg ถือเป็นหัวใจสำคัญของการควบคุมขนาดไฟล์และความลื่นไหลของวิดีโอ เราจะใส่หรือไม่ใส่โปรแกรม ffmpeg ก็ยังทำงาน เพราะ จัดการให้อัตโนมัติ แต่หากเราต้องการควบคุมคุณภาพของวีดีโอ เราจำเป็นต้องรู้ว่า ffmpeg สั่งยังไง

การปรับบิตเรต (Video & Audio Bitrate)

แบบที่ ก: กำหนดบิตเรตคงที่ (CBR - Constant Bitrate)

วิธีนี้เหมาะกับตอนต้องการควบคุมขนาดไฟล์แบบเป๊ะๆ หรือใช้สำหรับการทำ Live Streaming โดยจะใช้โค้ด -b:v (สำหรับวิดีโอ) และ -b:a (สำหรับเสียง)

ffmpeg -i input.mp4 -b:v 2M -b:a 128k output.mp4

  • -b:v 2M : ตั้งค่าบิตเรตของวิดีโอไว้ที่ 2 Mbps
  • -b:a 128k : ตั้งค่าบิตเรตของเสียงไว้ที่ 128 kbps

วันศุกร์ที่ 15 พฤษภาคม พ.ศ. 2569

zoompan ใน ffmpeg

ความหมายของคำสั่ง zoompan ของ ffmpeg

 -vf "zoompan=z='min(zoom+0.0003,1.05)':d=100"

คำสั่ง -vf "zoompan=z='min(1+on*0.0003,1.05)':d=1" คือการสั่งให้ ซูมเข้า (Zoom-in) วิดีโอทีละน้อยอย่างช้าๆ และนุ่มนวล โดยมีรายละเอียดการทำงานของแต่ละพารามิเตอร์ดังนี้

โครงสร้างคำสั่ง

  • -vf: ย่อมาจาก Video Filter เป็นการบอกให้โปรแกรมเรียกใช้ฟิลเตอร์จัดการภาพวิดีโอ
  • zoompan: ชื่อฟิลเตอร์ที่ใช้สำหรับทำเอฟเฟกต์ ซูม (Zoom) และ เลื่อนมุมกล้อง (Pan)

วันพุธที่ 29 เมษายน พ.ศ. 2569

อธิบายคำสั่ง ffmpeg -movflags faststart

ประโยชน์: สำหรับ อัปโหลดขึ้นเว็บ / โซเชียล ให้วีดีโอเล่นทันที

ตัวอย่างการใช้

ffmpeg -i input.mp4 -c:v libx264 -c:a aac -movflags faststart output.mp4

ปกติ วีดีโอไฟล์ .mp4 จะเก็บข้อมูลสำคัญ (index / moov atom) ไว้ “ท้ายไฟล์” ทำให้เวลาเปิดผ่านเว็บ ต้องโหลดเกือบหมดก่อนถึงจะเริ่มเล่นได้

แต่พอใช้: -movflags faststart มันจะย้ายข้อมูลพวกนี้มาไว้ข้างหน้า วิดีโอจะ “กดแล้วเล่นได้ทันที” (progressive download)

ควรใช้พารามิเตอร์ -movflags faststart ตอนไหน

  • อัปโหลดขึ้นเว็บ / โซเชียล (YouTube, Facebook, เว็บทั่วไป)
  • ทำวิดีโอให้คนดูผ่าน browser
  • ทำไฟล์ที่ต้อง “สตรีม” ไม่ใช่โหลดก่อนดู
  • แจกไฟล์ให้ลูกค้า / ผู้ใช้ทั่วไป

วันศุกร์ที่ 24 เมษายน พ.ศ. 2569

ffmpeg คู่มือเข้ารหัสวิดีโอ H.264 (x264)

โหมดการควบคุมอัตราการส่งข้อมูล (Rate Control)

1. การควบคุมอัตราบิต (Rate Control)

หน้าเว็บเน้นย้ำ 2 โหมดหลักที่ต้องเลือกใช้ตามจุดประสงค์

  • Constant Rate Factor (CRF) - เน้นคุณภาพ:

    • หลักการ: เลือกคุณภาพที่ต้องการ แล้วให้ Encoder จัดการ Bitrate เองตามความยากง่ายของภาพ

    • ค่าที่ควรทราบ: สเกลคือ 0-51

      • 0: Lossless (ชัดเท่าต้นฉบับแต่ไฟล์ใหญ่มาก)

      • 17–18: Visually Lossless (ทางสายตาดูไม่ออกว่าต่างจากต้นฉบับ)

      • 23: ค่าเริ่มต้น

      • 28: คุณภาพยังดีอยู่แต่ไฟล์จะเล็กกว่า 23 มาก

    • สูตรคำนวณ: ถ้าเพิ่มค่า CRF ไป +6 ขนาดไฟล์จะลดลงประมาณครึ่งหนึ่ง ในทางกลับกันถ้าลด -6 ขนาดไฟล์จะใหญ่ขึ้นประมาณเท่าตัว

  • Two-Pass - เน้นขนาดไฟล์:

    • หลักการ: ต้องรันคำสั่ง 2 รอบ รอบแรกเพื่อวิเคราะห์วิดีโอ (สร้าง Log file) รอบที่สองเพื่อ Encode จริงให้ได้ขนาดไฟล์ตามที่คำนวณไว้เป๊ะๆ

    • วิธีคำนวณ Bitrate: (ขนาดไฟล์ที่ต้องการในหน่วย MiB * 8388.608) / ความยาววิดีโอเป็นวินาที = Bitrate รวม

วันศุกร์ที่ 9 พฤษภาคม พ.ศ. 2568

แนะนำคำสั่ง ffmpeg น่าลองใช้

- ffmpeg สร้างวีดีโอจากภาพให้หมุนรอบ

ตัวอย่างคำสั่ง

ffmpeg -f lavfi -i color=c=ffffff:s=680x680:d=10 -loop 1 -i filename.png -filter_complex "[1]rotate=angle=PI*t:fillcolor=none:ow='hypot(iw,ih)':oh=ow[fg];[0][fg]overlay=x=(W-w)/2:y=(H-h)/2:shortest=1:format=auto,format=yuv420p" -movflags +faststart output.mp4

พารามิเตอร์

  • -f คือเรียกใช้ ไลบรารี lavfi
  • color=c=ffffff คือสีพื้นหลัง
  • s=680x680 คือขนาดของภาพ (กว้างxยาว)

clone คัดลอก วีดีโอเดียวต่อๆกันหลายครั้ง จากตัวอย่างด้านล่างให้วีดีโอแสดงต่อกัน 9 รอบ

ffmpeg -stream_loop 9 -i input.mp4 -c copy output.mp4