Blockdit Logo
Blockdit Logo (Mobile)
สำรวจ
ลงทุน
คำถาม
เข้าสู่ระบบ
มีบัญชีอยู่แล้ว?
เข้าสู่ระบบ
หรือ
ลงทะเบียน
Shoper Gamer
•
ติดตาม
8 ต.ค. เวลา 03:28 • การศึกษา
FFmpeg คืออะไร? ทำความรู้จักหัวใจสำคัญเบื้องหลังการตัดต่อ บีบอัด และสตรีมมิ่งวิดีโอทั่วโลก
โดย
เชื่อว่าหลายคนคงเคยใช้โปรแกรมแปลงไฟล์วิดีโออย่าง Format Factory หรือ HandBrake โดยไม่รู้ว่าทั้งสองโปรแกรมนี้ต่างก็ใช้ FFmpeg เป็นเครื่องยนต์เบื้องหลัง หรือแม้แต่เวลาเราเปิดดูวิดีโอผ่าน YouTube เบื้องหลังการสตรีมมิ่งทั้งหมดก็มี FFmpeg ทำงานอยู่เช่นกันครับ
FFmpeg คือชุดเครื่องมือและไลบรารีสำหรับจัดการไฟล์มัลติมีเดียที่ทรงพลังที่สุดในโลก ถูกนำไปใช้งานโดยแพลตฟอร์มและซอฟต์แวร์ยักษ์ใหญ่อย่าง YouTube, VLC และ Google Chrome ถ้าจะให้เปรียบเทียบ มันคือมีดสวิสอาร์มีของวงการมัลติมีเดีย ที่ทำได้ทุกอย่างตั้งแต่การแปลงไฟล์ ตัดต่อ บีบอัด สตรีม ไปจนถึงการวิเคราะห์ข้อมูลวิดีโอ
- FFmpeg Logo -
★
FFmpeg คืออะไร?
FFmpeg คือชุดเครื่องมือและไลบรารีแบบ Open Source สำหรับจัดการไฟล์มัลติมีเดีย ไม่ว่าจะเป็นเสียง วิดีโอ คำบรรยาย (Subtitle) และข้อมูล Metadata โดยชื่อ FFmpeg มาจากคำว่า Fast Forward Moving Picture Experts Group ซึ่งสะท้อนถึงความเร็วและมาตรฐานที่ตัวโปรโตคอลยึดถือ
FFmpeg ไม่ได้เป็นเพียงโปรแกรมเดียว แต่ประกอบด้วย ชุดของไลบรารี ที่ทำงานร่วมกันดังนี้ครับ:
⚪ libavcodec: ไลบรารีหลักสำหรับ Encode และ Decode เสียงและวิดีโอ (หัวใจสำคัญ)
⚪ libavformat: จัดการ Container Formats และ Streaming Protocols ต่างๆ
⚪ libavfilter: จัดการ ฟิลเตอร์ (Filters) สำหรับปรับแต่งวิดีโอและเสียง
⚪ libavdevice: เชื่อมต่อและจัดการกับอุปกรณ์ Capture/Playback
⚪ libswscale: จัดการแปลงระบบสีและปรับขนาดภาพ (Resizing/Color Conversion)
⚪ libswresample: จัดการกระบวนการ Audio Resampling
💡 สรุปสั้นๆ: FFmpeg คือชุดเครื่องมือและไลบรารี Open Source สำหรับจัดการไฟล์มัลติมีเดียแบบครบวงจร ตั้งแต่การแปลงไฟล์ บีบอัด ตัดต่อ สตรีม ไปจนถึงการวิเคราะห์ข้อมูล เป็นเครื่องยนต์หลักที่อยู่เบื้องหลังซอฟต์แวร์มัลติมีเดียส่วนใหญ่ในโลก
★
FFmpeg ทำงานอย่างไร?
การทำงานของ FFmpeg อาศัย Pipeline ที่ชัดเจน ประกอบด้วย 4 ขั้นตอนหลักดังนี้ครับ:
1) Demuxing (แยก Container): ขั้นแรก FFmpeg จะเปิดไฟล์และแยก Stream ต่างๆ ออกจากกัน เช่น แยก Video Stream, Audio Stream และ Subtitle Stream ออกจากไฟล์ Container (เช่น MP4, MKV) โดยข้อมูลที่ได้จะอยู่ในรูปของ Packet ซึ่งยังคงถูกบีบอัดอยู่
2) Decoding (ถอดรหัส): Packet จะถูกส่งไปยัง Decoder เพื่อถอดรหัสกลับเป็น Frame ซึ่งเป็นข้อมูลดิบที่ยังไม่ถูกบีบอัด โดยใช้ไลบรารี libavcodec เป็นหลัก
3) Filtering (ปรับแต่ง): Frame ที่ถอดรหัสแล้วจะถูกส่งผ่าน Filtergraph เพื่อปรับแต่งตามต้องการ เช่น ปรับขนาด, เปลี่ยนสี, แทรกคำบรรยาย หรือรวมวิดีโอเข้าด้วยกัน
4) Encoding (เข้ารหัส) และ Muxing (รวม Container): Frame ที่ปรับแต่งเสร็จแล้วจะถูกส่งไปยัง Encoder เพื่อบีบอัดใหม่ จากนั้น Packets ที่ได้จะถูก Mux รวมกลับเข้าเป็นไฟล์ Container เดียวในที่สุด
⚪ กระบวนการ Transcoding: เมื่อรวมทุกขั้นตอนเข้าด้วยกัน จะได้กระบวนการทำงานแบบเต็มรูปแบบ คือ Input → Demux → Decode → Filter → Encode → Mux → Output
⚪ Threading Model: FFmpeg รองรับการทำงานแบบ Multi-threading ได้แก่ Frame Threading (ถอดรหัสหลาย Frame พร้อมกัน) และ Slice Threading (แบ่ง Frame เดียวเป็นส่วนย่อยเพื่อประมวลผลพร้อมกัน)
★
ประเภทของ FFmpeg
เราสามารถจำแนกประเภทเครื่องมือและการใช้งานของ FFmpeg ออกเป็นส่วนต่างๆ ได้ดังนี้ครับ
🛠️ จำแนกตามเครื่องมือหลัก (Tools):
⚪ ffmpeg: เครื่องมือ Command Line หลักสำหรับแปลงไฟล์ บีบอัด ตัดต่อ และสตรีมมิ่ง
⚪ ffprobe: เครื่องมือสำหรับวิเคราะห์ข้อมูลมัลติมีเดีย แสดงรายละเอียด Codec, Bitrate, Resolution และสถิติต่างๆ
⚪ ffplay: โปรแกรมเล่นมัลติมีเดียขนาดมินิมอลที่รันด้วยไลบรารีของ FFmpeg
🧑🦱 จำแนกตามลักษณะการใช้งาน:
⚪ Transcoding: การแปลงไฟล์จาก Format หนึ่งไปยังอีก Format หนึ่ง
⚪ Streaming: การสตรีมวิดีโอแบบ Real-time ผ่านโปรโตคอล RTMP, HLS หรือ DASH
⚪ Filtering: การปรับแต่งไฟล์มัลติมีเดียด้วยระบบฟิลเตอร์
⚪ Analysis: การตรวจวิเคราะห์ข้อมูลเชิงลึกของไฟล์มัลติมีเดีย
★
ประโยชน์ของ FFmpeg
✅ รองรับ Format และ Codec ครอบคลุมที่สุด: รองรับตั้งแต่ Format เก่าแก่ไปจนถึงมาตรฐานล่าสุดอย่าง AV1 และ VVC
✅ Cross-platform: สามารถทำงานได้ข้ามระบบปฏิบัติการ ทั้ง Windows, macOS, Linux และอุปกรณ์เคลื่อนที่
✅ ฟรีและเป็น Open Source: ใช้งานภายใต้ License แบบ LGPL/GPL โดยไม่มีค่าใช้จ่าย
✅ เป็น Backend ของแพลตฟอร์มระดับโลก: ซอฟต์แวร์และแพลตฟอร์มชั้นนำอย่าง YouTube, VLC และ Google Chrome ต่างใช้ FFmpeg เป็นส่วนสำคัญในการประมวลผล
✅ รองรับทั้ง CLI และ Library: มีความยืดหยุ่นสูง เลือกใช้ได้ทั้งผ่านคำสั่ง Command Line หรือการเรียกใช้ไลบรารีในการพัฒนาซอฟต์แวร์
★
ควรมีความรู้พื้นฐานอะไรบ้าง?
ก่อนจะเริ่มต้นใช้งาน FFmpeg ควรมีความรู้พื้นฐานเหล่านี้ครับ
⚪ พื้นฐาน Command Line: การรันคำสั่งผ่าน Terminal หรือ Command Prompt
⚪ ความรู้เรื่อง Codec และ Container: เข้าใจความแตกต่างระหว่าง Codec (เช่น H.264, AAC) กับ Container (เช่น MP4, MKV)
⚪ พื้นฐานงานมัลติมีเดีย: ความเข้าใจเกี่ยวกับ Resolution, Bitrate, Frame Rate และ Sample Rate
⚪ พื้นฐานการเขียนโปรแกรม: (สำหรับผู้ที่ต้องการนำไปใช้เป็น Library) เช่น ภาษา C, Python หรือภาษาอื่นที่รองรับ
★
FFmpeg VS FFmpeg.wasm
FFmpeg.wasm คือการนำ FFmpeg มาคอมไพล์เป็น WebAssembly ผ่าน Emscripten เพื่อให้สามารถรันชุดคำสั่งของ FFmpeg ภายในเบราว์เซอร์ได้โดยตรง โดยความแตกต่างในมิติต่างๆ สามารถอธิบายได้ดังนี้ครับ:
🧑💻 สภาพแวดล้อมในการทำงาน: FFmpeg (Native) รันบนระบบปฏิบัติการโดยตรง (Windows, macOS, Linux) ส่วน FFmpeg.wasm รันอยู่ภายในเว็บเบราว์เซอร์ (เช่น Chrome, Edge)
🖥️ การเข้าถึง Hardware: FFmpeg (Native) สามารถเข้าถึง GPU และ CPU ได้เต็มประสิทธิภาพ ส่วน FFmpeg.wasm มีข้อจำกัดสูง และไม่รองรับการเร่งความเร็วด้วย GPU
⚡ ความเร็วในการประมวลผล: FFmpeg (Native) ทำงานได้รวดเร็วมากจาก Hardware Acceleration ส่วน FFmpeg.wasm ทำงานช้ากว่าประมาณ 10 ถึง 90 เท่า
1
👥 การรองรับ Threading: FFmpeg (Native) รองรับ Multithreading เต็มรูปแบบ ส่วน FFmpeg.wasm ถูกจำกัดด้วย SharedArrayBuffer บนเบราว์เซอร์
1
💽 ข้อจำกัดด้านหน่วยความจำ (RAM): FFmpeg (Native) ประมวลผลตาม RAM ที่มีในระบบ ส่วน FFmpeg.wasm ถูกจำกัดไว้ที่ประมาณ 2 GB
📦 การติดตั้ง: FFmpeg (Native) ต้องทำการติดตั้งลงในเครื่อง ส่วน FFmpeg.wasm สามารถโหลดมาประมวลผลได้ทันทีเมื่อเปิดหน้าเว็บ
🛡️ ความเป็นส่วนตัวของข้อมูล: FFmpeg (Native) ประมวลผลภายในเครื่อง ส่วน FFmpeg.wasm ประมวลผลบนเบราว์เซอร์ฝั่ง Client ทำให้ไม่ต้องอัปโหลดไฟล์ขึ้นเซิร์ฟเวอร์
🧑🦱 ความเหมาะสมในการใช้งาน: FFmpeg (Native) เหมาะสำหรับงาน Production และไฟล์ขนาดใหญ่ ส่วน FFmpeg.wasm เหมาะสำหรับเว็บแอปพลิเคชัน งานไฟล์ขนาดเล็ก หรือระบบที่ต้องการความเป็นส่วนตัวสูง
★
ตัวอย่างการใช้งาน FFmpeg
🖥️ การใช้งาน FFmpeg (Native)
⚪ แปลง Format วิดีโอ: เช่น เปลี่ยนไฟล์ MOV เป็น MP4 หรือ MKV เป็น WebM
⚪ บีบอัดวิดีโอ: ลดขนาดไฟล์วิดีโอลงโดยที่ยังรักษาคุณภาพไว้ได้ดี
⚪ ตัดต่อวิดีโอ: ตัดเลือกเฉพาะช่วงเวลาที่ต้องการใช้งาน
⚪ รวมวิดีโอหลายไฟล์: รวมไฟล์วิดีโอหลายตัวเข้าด้วยกันเป็นไฟล์เดียว
⚪ แยกเสียงออกจากวิดีโอ: ดึงเฉพาะ Audio Track ออกมาจากไฟล์วิดีโอ
⚪ แปลงไฟล์เป็น GIF: แปลงช่วงวิดีโอสั้นๆ ให้กลายเป็นภาพเคลื่อนไหว GIF
⚪ สตรีมมิ่งแบบ Real-time: ส่งสัญญาณวิดีโอไปยังแพลตฟอร์มสตรีมมิ่งต่างๆ
🌐 การใช้งาน FFmpeg.wasm บนเว็บ
⚪ เครื่องมือแปลงไฟล์บนเว็บ: ให้ผู้ใช้แปลงไฟล์วิดีโอได้โดยไม่ต้องอัปโหลดขึ้นเซิร์ฟเวอร์
⚪ รวมไฟล์ TS เป็น MP4: รวมไฟล์วิดีโอย่อย .ts จากระบบ HLS ให้เป็นไฟล์ MP4 เดียว
⚪ บีบอัดวิดีโอก่อนอัปโหลด: ย่อขนาดไฟล์วิดีโอฝั่ง Client ก่อนส่งไปยังเซิร์ฟเวอร์
★
ตัวอย่างการเริ่มต้นใช้งาน FFmpeg ง่ายๆ
1) FFmpeg Native (Command Line):
Bash
# 1. แปลง MOV เป็น MP4
ffmpeg -i input.mov output.mp4
# 2. บีบอัดวิดีโอ
ffmpeg -i input.mp4 -vcodec libx264 -crf 28 output.mp4
# 3. ตัดวิดีโอช่วงวินาทีที่ 10 ถึง 30
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output.mp4
# 4. แยกเสียงออกมาเป็นไฟล์ AAC
ffmpeg -i video.mp4 -vn -acodec copy audio.aac
# 5. ตรวจสอบข้อมูลไฟล์
ffprobe input.mp4
━━━━━━━━━━
3
2) FFmpeg.wasm (JavaScript):
JavaScript
import { createFFmpeg, fetchFile } from @ffmpeg/ffmpeg;
const ffmpeg = createFFmpeg({ log: true });
1
async function convertVideo(file) {
// 1. โหลด FFmpeg
await ffmpeg.load();
// 2. เขียนไฟล์เข้า Virtual FS
ffmpeg.FS'writeFile, input.mp4, await fetchFile(file));
// 3. รันคำสั่งแปลงไฟล์
await ffmpeg.run(-i, input.mp4, -c, copy, output.mp4);
1
// 4. อ่านผลลัพธ์
const data = ffmpeg.FS(readFile, output.mp4);
// 5. สร้าง Download Link
return new Blob([data.buffer], { type: video/mp4 });
}
✏️ Shoper Gamer
>>
https://shopergamer.vercel.app
✓
[Shoper Gamer] WebAssembly (Wasm) คืออะไร 👇
>>
https://www.blockdit.com/posts/6a1bc7a7f76e16983398fef1
✓
[Shoper Gamer] CLI คืออะไร 👇
>>
https://www.blockdit.com/posts/66cda4f1ab415d9782e4a3f8
✓
[Shoper Gamer] ทำไม Blogger ถึงนิยมฝังคลิปยูทูปไว้ใน Blog 👇
>>
https://www.blockdit.com/posts/66c0aad2b8b6fc329c6b1446
Credit :
👇
●
https://huggingface.co/datasets/ShoperGamer/gg-replay-runtime/blob/main/ffmpeg.exe
●
https://www.ffmpeg.org/about.html
●
https://api.video/what-is/ffmpeg/
●
https://getstream.io/blog/ffmpeg/
ข่าวรอบโลก
ffmpeg
wasm
บันทึก
1
1
1
1
โฆษณา
ดาวน์โหลดแอปพลิเคชัน
© 2026 Blockdit
เกี่ยวกับ
ช่วยเหลือ
คำถามที่พบบ่อย
นโยบายการโฆษณาและบูสต์โพสต์
นโยบายความเป็นส่วนตัว
แนวทางการใช้แบรนด์ Blockdit
Blockdit เพื่อธุรกิจ
ไทย