หน้าเว็บ

วันจันทร์ที่ 29 มิถุนายน พ.ศ. 2569

ffmpeg ฝังซับไตเติ้ลภาษาไทย

 จากตัวอย่างนี้  ไฟล์วิดีโอinput.mp4 ไม่มีเสียง

ffmpeg -y -hide_banner -i "input.mp4" -filter_complex "[0:v]subtitles=filename='C\:/temp/test.srt':force_style='FontName=TH Fah kwang,FontSize=22'[v1]" -map "[v1]" -c:v libx264 output.mp4

ถ้า ไฟล์วิดีโอinput.mp4 มีเสียง (1 แทร็คเสียง -map 0:1)

ffmpeg -y -hide_banner -i "input.mp4" -filter_complex "[0:v]subtitles=filename='C\:/temp/test.srt':force_style='FontName=TH Fah kwang,FontSize=22'[v1]" -map 0:1 c:a copy-map "[v1]" -c:v libx264 output.mp4

1. สีขาวนวล (Warm White) - มาตรฐานสูงสุดนิยมใช้มากที่สุดเพราะดูสบายตา ไม่สว่างจ้าจนแย่งซีนวิดีโอโค้ดสี: PrimaryColour=&HFFFFFF& [1]คำแนะนำ: ควรคู่กับขอบสีดำ (OutlineColour=&H000000&) และความหนาขอบ Outline=2 [1] เพื่อให้อ่านง่ายเมื่อเจอพื้นหลังสีขาว

2. สีเหลืองโรงภาพยนตร์ (Cinema Yellow) - สไตล์หนังเทศสีเหลืองโทนนี้ช่วยให้อ่านง่ายมากในฉากที่มืดหรือสว่างเกินไป นิยมใช้ในแผ่น DVD/Blu-ray และ Netflixโค้ดสี: PrimaryColour=&H00F0FF&

คำแนะนำ: จับคู่กับขอบสีดำสะท้อนอารมณ์แบบโรงภาพยนตร์คลาสสิก

วันอังคารที่ 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 รวม