Hướng dẫn chuyển đổi video bằng dòng lệnh trên Linux với FFmpeg

 


Nếu bạn mới chuyển sang Linux, có một điều khá thú vị là bạn không nhất thiết phải cài ứng dụng giao diện để chuyển đổi video.

Linux có một công cụ cực kỳ mạnh tên là FFmpeg. Nó có thể chuyển đổi định dạng, giảm độ phân giải, giảm FPS, nén dung lượng, cắt video, tách âm thanh, ghép video... hoàn toàn bằng dòng lệnh.

Điểm hay là FFmpeg không chỉ dành cho Debian. Nó có thể sử dụng trên hầu hết các bản phân phối Linux phổ biến.


1. FFmpeg là gì?

FFmpeg là một bộ công cụ xử lý multimedia mã nguồn mở.

Nó có thể làm việc với:

  • MP4
  • MKV
  • AVI
  • MOV
  • WebM
  • MP3
  • AAC
  • FLAC
  • H.264
  • H.265/HEVC
  • VP9
  • AV1
  • và rất nhiều định dạng khác.

Ngoài Linux, FFmpeg còn có phiên bản cho Windows và macOS.


2. Cài FFmpeg

Debian / Ubuntu / Linux Mint

Debian, Ubuntu và Linux Mint có thể cài bằng:

sudo apt update
sudo apt install ffmpeg

Fedora

sudo dnf install ffmpeg

Arch Linux

sudo pacman -S ffmpeg

Sau khi cài xong, kiểm tra:

ffmpeg -version

Nếu hiện thông tin phiên bản FFmpeg là cài thành công.


3. Xem thông tin video

FFmpeg có một công cụ đi kèm tên là ffprobe.

Ví dụ:

ffprobe "video.mp4"

Nếu chỉ muốn xem những thông tin quan trọng:

ffprobe -v error -select_streams v:0 \
-show_entries stream=codec_name,profile,width,height,bit_rate,avg_frame_rate \
-of default=noprint_wrappers=1 "video.mp4"

Ví dụ kết quả:

codec_name=h264
profile=Main
width=3840
height=2160
avg_frame_rate=60/1
bit_rate=51531892

Điều này có nghĩa video là:

  • H.264
  • 3840×2160
  • 60 FPS
  • bitrate khoảng 51,5 Mbps

Đây là cách rất nhanh để biết tại sao một video có thể phát nặng trên máy tính cũ.


4. Chuyển video 4K xuống 1080p

Ví dụ có một video:

video.mp4

và muốn chuyển thành 1920×1080:

ffmpeg -i "video.mp4" \
-vf "scale=1920:1080" \
-c:v libx264 -crf 20 -preset medium \
-c:a aac -b:a 192k \
"video-1080p.mp4"

FFmpeg sẽ giữ nguyên file gốc và tạo ra một file mới.


5. Chuyển 4K 60 FPS xuống 1080p 30 FPS

Đây là trường hợp rất hữu ích nếu máy tính không đủ mạnh để phát video 4K60.

ffmpeg -i "video.mp4" \
-vf "scale=1920:1080,fps=30" \
-c:v libx264 -crf 20 -preset medium \
-c:a aac -b:a 192k \
"video-1080p30.mp4"

Ví dụ với một máy tính cũ:

3840×2160 60 FPS
        ↓
1920×1080 30 FPS

Video mới sẽ nhẹ hơn đáng kể và dễ phát hơn.


6. CRF là gì?

-crf quyết định chất lượng video khi mã hóa bằng H.264.

Ví dụ:

-crf 18

Chất lượng rất cao, file lớn.

-crf 20

Chất lượng cao, phù hợp sử dụng thông thường.

-crf 23

Cân bằng giữa chất lượng và dung lượng.

-crf 28

File nhỏ hơn nhưng chất lượng giảm rõ hơn.

Thông thường có thể bắt đầu với:

CRF 18–20 → ưu tiên chất lượng
CRF 21–23 → cân bằng
CRF 24–28 → ưu tiên dung lượng

Không có một bitrate cố định nào phù hợp cho mọi video; CRF cho phép FFmpeg tự điều chỉnh bitrate theo độ phức tạp của từng cảnh.


7. preset là gì?

Ví dụ:

-preset medium

Preset quyết định tốc độ mã hóa và hiệu quả nén.

Có thể hình dung:

ultrafast
superfast
veryfast
faster
fast
medium
slow
slower
veryslow

Preset càng nhanh thì encode càng nhanh nhưng thường cần bitrate lớn hơn để đạt cùng chất lượng.

Preset càng chậm thì encode lâu hơn nhưng nén hiệu quả hơn.

Nếu máy tính cũ như i7-2600, có thể dùng:

-preset fast

để giảm thời gian chờ.

Nếu không vội:

-preset medium

là lựa chọn cân bằng.


8. Chỉ đổi định dạng mà không mã hóa lại

Đây là một mẹo cực kỳ hữu ích.

Nếu video và âm thanh đã tương thích với container mới, có thể chỉ đổi container mà không encode lại:

ffmpeg -i "video.mkv" -c copy "video.mp4"

Cách này rất nhanh vì FFmpeg không mã hóa lại video.

Nó có thể hoàn thành trong vài giây hoặc vài phút tùy kích thước file và tốc độ ổ đĩa.

Tuy nhiên, không phải mọi video MKV đều có thể chuyển sang MP4 bằng -c copy.


9. Giảm dung lượng video

Ví dụ video 1080p đang có dung lượng quá lớn:

ffmpeg -i "video.mp4" \
-c:v libx264 -crf 23 -preset medium \
-c:a aac -b:a 128k \
"video-nho.mp4"

Độ phân giải vẫn giữ nguyên, nhưng video được nén lại.


10. Chuyển một đoạn video

Ví dụ muốn lấy từ phút 1 đến phút 3:

ffmpeg -ss 00:01:00 -i "video.mp4" \
-t 00:02:00 \
-c copy "doan-video.mp4"

Trong ví dụ này:

  • bắt đầu ở phút 1
  • lấy 2 phút
  • không encode lại

Nên thao tác rất nhanh.


11. Tách âm thanh khỏi video

Ví dụ lấy âm thanh MP3:

ffmpeg -i "video.mp4" \
-vn -c:a libmp3lame -b:a 192k \
"audio.mp3"

Hoặc nếu muốn lấy nguyên luồng âm thanh mà không mã hóa lại:

ffmpeg -i "video.mp4" -vn -c:a copy "audio.m4a"

12. Đổi video thành GIF

Ví dụ:

ffmpeg -i "video.mp4" \
-vf "fps=10,scale=640:-1" \
"video.gif"

GIF sẽ có chiều rộng 640 pixel và giữ tỷ lệ hình ảnh.


13. Làm hàng loạt nhiều video

Đây là một trong những điểm mạnh của Linux.

Ví dụ muốn chuyển toàn bộ MP4 trong thư mục hiện tại thành 1080p:

for f in *.mp4; do
    ffmpeg -i "$f" \
    -vf "scale=1920:1080" \
    -c:v libx264 -crf 20 -preset medium \
    -c:a aac -b:a 192k \
    "${f%.mp4}-1080p.mp4"
done

Không cần mở từng file.

FFmpeg sẽ lần lượt xử lý tất cả video.


14. Với máy tính cũ thì nên làm thế nào?

Ví dụ máy dùng:

Intel Core i7-2600
RAM 12 GB
Intel HD Graphics 2000

Nếu gặp video 4K 60 FPS, không nhất thiết phải cố phát nguyên bản.

Có thể tạo một bản nhẹ hơn:

ffmpeg -i "video.mp4" \
-vf "scale=1920:1080,fps=30" \
-c:v libx264 -crf 20 -preset fast \
-c:a aac -b:a 192k \
"video-1080p30.mp4"

Sau đó giữ nguyên video 4K làm bản gốc và dùng bản 1080p để xem trên máy cũ.


15. FFmpeg có dùng được trên mọi Linux không?

Gần như có.

FFmpeg không phải công cụ riêng của Debian.

Có thể sử dụng trên:

  • Debian
  • Ubuntu
  • Linux Mint
  • Linux Mint Debian Edition
  • Fedora
  • Arch Linux
  • openSUSE
  • Manjaro
  • Pop!_OS
  • và nhiều bản Linux khác.

Điểm khác nhau chủ yếu là cách cài đặt.

Ví dụ:

Debian/Ubuntu:

sudo apt install ffmpeg

Fedora:

sudo dnf install ffmpeg

Arch:

sudo pacman -S ffmpeg

Còn các lệnh ffmpeg ... sau khi cài đặt thì nhìn chung giống nhau.


16. FFmpeg có thay thế hoàn toàn ứng dụng giao diện không?

Không nhất thiết.

FFmpeg rất mạnh nhưng chủ yếu sử dụng bằng dòng lệnh. Nếu cần chỉnh nhiều tùy chọn bằng giao diện, các ứng dụng như HandBrake sẽ dễ sử dụng hơn.

Có thể xem như:

HandBrake
    ↓
Dễ dùng, có giao diện

FFmpeg
    ↓
Mạnh, linh hoạt, tự động hóa tốt

Với người dùng Linux, biết một số lệnh FFmpeg cơ bản là rất đáng giá vì có thể xử lý video nhanh mà không cần cài thêm một ứng dụng giao diện cho từng nhu cầu.


Một số lệnh nên nhớ

Xem thông tin video

ffprobe "video.mp4"

4K → 1080p

ffmpeg -i "video.mp4" -vf "scale=1920:1080" \
-c:v libx264 -crf 20 -c:a aac "1080p.mp4"

4K60 → 1080p30

ffmpeg -i "video.mp4" -vf "scale=1920:1080,fps=30" \
-c:v libx264 -crf 20 -c:a aac "1080p30.mp4"

Đổi container không encode lại

ffmpeg -i "video.mkv" -c copy "video.mp4"

Cắt video nhanh

ffmpeg -ss 00:01:00 -i "video.mp4" -t 00:02:00 \
-c copy "doan-video.mp4"

Kết luận

FFmpeg là công cụ xử lý video dùng chung trên Linux, không riêng Debian.

Với Linux, bạn hoàn toàn có thể:

mở Terminal → nhập một lệnh → để máy tự xử lý video.

Đặc biệt khi cần xử lý nhiều video cùng lúc, FFmpeg còn mạnh hơn rất nhiều so với việc mở từng video bằng một ứng dụng giao diện.

Đăng nhận xét

Mới hơn Cũ hơn