
FFmpeg
Khung Xử lý Đa phương tiện Mã nguồn mở
Mã hoá, Giải mã, Chuyển mã, Truyền phát & Chuyển đổi Tệp Âm thanh & Video qua API FFmpeg.
FFmpeg là gì?
FFmpeg là một khung đa phương tiện mã nguồn mở hàng đầu cho phép các nhà phát triển ghi âm, chuyển đổi và phát luồng nội dung âm thanh và video. Nó bao gồm một bộ thư viện toàn diện—như libavcodec, libavformat, libavutil, libavfilter, libswscale và libswresample—cung cấp các công cụ mạnh mẽ để xử lý các nhiệm vụ đa phương tiện đa dạng. Với hỗ trợ hàng trăm codec và định dạng, FFmpeg cung cấp sức mạnh cho vô số ứng dụng, từ phần mềm chỉnh sửa video đến máy chủ phát luồng và trình phát media.
FFmpeg được áp dụng rộng rãi trong nhiều ngành công nghiệp nhờ tính linh hoạt, hiệu suất và cộng đồng hỗ trợ tích cực. Nó xử lý mọi thứ từ chuyển đổi định dạng đơn giản đến lọc video phức tạp và phát luồng thời gian thực. Dù bạn đang xây dựng một máy chủ media, một trình phát trên máy tính để bàn, hay một quy trình chuyển đổi dựa trên đám mây, FFmpeg cung cấp khả năng xử lý đáng tin cậy và chất lượng cao. Các công cụ dòng lệnh như ffmpeg, ffplay và ffprobe giúp dễ dàng tích hợp vào các script và quy trình tự động, trong khi API C và các binding (ví dụ, cho Python) cho phép kiểm soát lập trình sâu hơn.
Bắt đầu với FFmpeg
Để bắt đầu sử dụng FFmpeg, cài đặt nó qua trình quản lý gói của hệ thống (ví dụ, `apt install ffmpeg` trên Ubuntu, `brew install ffmpeg` trên macOS) hoặc tải xuống các binary đã biên dịch sẵn từ trang chính thức. Đối với việc sử dụng lập trình, cài đặt wrapper Python qua `pip install ffmpeg-python` hoặc sử dụng các header thư viện C chính thức. FFmpeg cũng có sẵn trên GitHub tại [FFmpeg GitHub](https://github.com/FFmpeg/FFmpeg), nơi bạn có thể biên dịch từ mã nguồn cho các cấu hình tùy chỉnh. Dung lượng nhẹ và hỗ trợ đa nền tảng của nó làm cho nó trở nên lý tưởng cho triển khai trên máy tính để bàn, máy chủ và nhúng.
Cài đặt FFmpeg qua Trình quản lý gói
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# macOS (Homebrew)
brew install ffmpeg
# Python wrapper
pip install ffmpeg-python
Chuyển đổi phương tiện giữa các định dạng
FFmpeg xuất sắc trong việc chuyển đổi các tệp media giữa hàng trăm định dạng và codec. Bạn có thể chuyển mã video từ MP4 sang WebM, trích xuất âm thanh từ các tệp video, hoặc thay đổi định dạng container mà không cần mã hóa lại (sao chép luồng). Các cài đặt mặc định thông minh của nó đảm bảo chất lượng cao, trong khi các tùy chọn nâng cao cho phép bạn tinh chỉnh bitrate, độ phân giải, tốc độ khung hình và các tham số codec. Dù bạn đang chuẩn bị nội dung cho phát trực tuyến trên web, lưu trữ, hoặc phát lại trên các thiết bị cụ thể, FFmpeg cung cấp kiểm soát chính xác đối với chất lượng và khả năng tương thích của đầu ra. Giao diện dòng lệnh hỗ trợ các chuỗi bộ lọc phức tạp để thay đổi kích thước, cắt xén và áp dụng hiệu ứng trong quá trình chuyển đổi.
Cách chuyển đổi MP4 sang WebM bằng FFmpeg?
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm
Phát trực tiếp thời gian thực & Truyền phát trực tiếp
FFmpeg hỗ trợ việc nhập, chuyển mã và truyền phát phương tiện trực tiếp qua các giao thức như RTMP, HLS và SRT. Nó có thể ghi hình từ webcam, micro, hoặc các nguồn mạng và đẩy luồng tới các nền tảng như YouTube, Twitch hoặc máy chủ RTMP tùy chỉnh. Với các tùy chọn độ trễ thấp và truyền phát bitrate thích ứng, FFmpeg cung cấp năng lực cho các pipeline phát sóng trực tiếp cho sự kiện, trò chơi và giám sát. Khả năng xử lý nhiều đầu vào, chồng lớp đồ họa và áp dụng các bộ lọc thời gian thực khiến nó trở nên lý tưởng cho các thiết lập truyền phát chuyên nghiệp. Bạn cũng có thể phân đoạn đầu ra cho DASH/HLS để phát lại thích ứng trên các thiết bị di động và trình duyệt web.
Cách phát luồng tệp video lên YouTube Live?
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -g 50 -c:a aac -b:a 160k -f flv "rtmp://a.rtmp.youtube.com/live2/your_stream_key"
Lọc video & Xử lý hậu kỳ
Khung libavfilter của FFmpeg cho phép lọc video thời gian thực mạnh mẽ thông qua một đồ thị có hướng không chu trình của các bộ lọc. Bạn có thể cắt, thay đổi kích thước, xoay, gỡ rãnh, giảm nhiễu, chồng lên các dấu nước, thêm văn bản, điều chỉnh màu sắc, và áp dụng các hiệu ứng phức tạp như chuyển động chậm hoặc quay nhanh — tất cả mà không cần mã hóa lại toàn bộ luồng. Các bộ lọc có thể được xâu chuỗi lại với nhau để xử lý đa giai đoạn, và tăng tốc phần cứng (ví dụ: NVENC, VAAPI, VideoToolbox) đảm bảo hiệu năng trên GPU hiện đại. Điều này làm cho FFmpeg trở nên không thể thiếu đối với các nhà biên tập video, người sáng tạo nội dung và các nhà phát triển xây dựng các pipeline xử lý phương tiện yêu cầu cải thiện hình ảnh hoặc chuẩn hoá định dạng.
Cách cắt, thay đổi kích thước & thêm watermark vào video?
ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v]crop=1280:720:0:0[scaled];[scaled][1:v]overlay=10:10" -c:a copy output.mp4
Trích xuất & Điều chỉnh siêu dữ liệu & phụ đề
FFmpeg cung cấp khả năng kiểm soát đầy đủ siêu dữ liệu (thẻ) và phụ đề được nhúng trong các tệp phương tiện. Bạn có thể trích xuất, chỉnh sửa hoặc xóa siêu dữ liệu (ví dụ: tiêu đề, nghệ sĩ, album, dữ liệu GPS) bằng các lệnh đơn giản, hoặc chuyển đổi phụ đề giữa các định dạng như SRT, ASS và VTT. Nó hỗ trợ ghép phụ đề vào video hoặc nhúng chúng dưới dạng các track riêng biệt. Đối với quy trình truy cập và bản địa hoá, FFmpeg cho phép xử lý hàng loạt các tệp phụ đề, điều chỉnh thời gian và quản lý các track ngôn ngữ. Điều này làm cho nó trở thành lựa chọn lý tưởng cho việc bản địa hoá phụ đề, quản lý tài sản truyền thông và tuân thủ các tiêu chuẩn phát sóng yêu cầu siêu dữ liệu được nhúng.
Cách trích xuất phụ đề từ tệp video?
ffmpeg -i input.mkv -map 0:s:0 -c:s srt output.srt
