Nhiều bạn hỏi mình dùng gì để biên tập video ngắn nhanh vậy. Câu trả lời hơi khác thường: không dùng CapCut, không dùng Premiere. Mình dùng một câu lệnh Terminal chạy trong ~30 giây trên MacBook, ra file MP4 đã đủ đăng.
Lý do đơn giản — 80% việc biên tập video ngắn là LẶP LẠI: khử ồn, chuẩn hoá âm lượng, thêm subtitle, chèn nhạc nền. Những cái đó code chạy được. Mình chỉ giữ CapCut cho phần cần sáng tạo (chỉnh màu, hiệu ứng đặc biệt).
Xem video demo 27 giây
Bài này chia sẻ nguyên bộ công cụ — tải miễn phí ở cuối bài. Ai đang muốn tự làm video Reels/Shorts hàng loạt cho kênh riêng đều dùng được, kể cả người chưa biết Terminal là gì.
📦 Tải bộ công cụ trước để làm theo
Bao gồm: hướng dẫn chi tiết, script Python fix typo tiếng Việt, font Playfair Display
Quy trình 6 bước
Áp dụng cho mọi video ngắn 9:16 hoặc 16:9. Chỉ cần copy-paste lệnh từng bước.
Bước 1 — Chuẩn bị thư mục làm việc
Nguyên tắc bất di bất dịch: không bao giờ động vào file gốc.
Copy file video sang thư mục làm việc riêng có 3 folder con:
mkdir -p ~/video-lam-viec/ten-video/{raw,work,output}
cp "/duong/dan/file-goc.MOV" ~/video-lam-viec/ten-video/raw/
cd ~/video-lam-viec/ten-video
raw/— file gốc, KHÔNG SỬAwork/— file trung gian (audio tách, transcript, font)output/— kết quả cuối cùng để upload
Bước 2 — Đo file gốc bằng ffprobe
Không dò trước là chọn param sai — render Reels 9:16 thành 16:9 là mất công đôi.
ffprobe -v error \
-show_entries "format=duration,size,bit_rate:stream=codec_type,codec_name,width,height" \
-of default=noprint_wrappers=1 raw/file-goc.MOV
Kết quả cần biết:
width < height→ video DỌC (9:16 · Reels/Shorts/TikTok)width > height→ video NGANG (16:9 · YouTube full)duration < 60s→ phù hợp Shorts/Reels
Bước 3 — Đo âm lượng + tìm khoảng lặng
Biết audio đang to hay nhỏ để chuẩn hoá đúng — chuẩn YouTube là -14 LUFS.
ffmpeg -i raw/file-goc.MOV -af "loudnorm=print_format=json" -f null - 2>&1 | tail -12
ffmpeg -i raw/file-goc.MOV -af "silencedetect=noise=-30dB:d=0.8" -f null - 2>&1 | grep silence
Nếu input_i = -22 LUFS thì bước cuối sẽ tự nâng lên -14. Silence 0.8-2s giữa câu KHÔNG nên cắt — đó là pause tự nhiên khán giả cần để suy ngẫm.
Bước 4 — Bóc lời tiếng Việt bằng Whisper
Chạy trên GPU Metal của MacBook M-series — 26 giây audio ra transcript trong ~2 giây.
# Tách audio sang 16kHz mono (định dạng Whisper cần)
ffmpeg -y -i raw/file-goc.MOV -ar 16000 -ac 1 -c:a pcm_s16le work/audio-16k.wav
# Transcribe tiếng Việt
whisper-cli -m ~/whisper-models/ggml-small.bin \
-l vi -otxt -osrt \
-f work/audio-16k.wav \
-of work/transcript
Whisper VN đôi khi sai typo (VD: “màng hình” → “màn hình”, “gép xim” → “ghép sim”). Bước 5 có script Python tự fix.
Bước 5 — Fix typo + chia subtitle ngắn
Whisper hay gộp câu dài 60+ ký tự — mobile 9:16 đọc không kịp, phải chia mỗi chunk ~50 ký tự.
python3 chia-subtitle.py work/transcript.srt work/transcript-burn.srt
Script chia-subtitle.py có sẵn trong bộ tải về. Nó tự:
- Fix 15+ typo phổ biến tiếng Việt của Whisper
- Chia câu dài thành chunk ≤50 ký tự, break tại dấu câu
- Merge chunk cuối < 1.5s vào chunk trước — tránh subtitle “flash” nhanh gây khó chịu
Bước 6 — Render video hoàn thiện · 1 câu lệnh
Chuẩn hoá âm lượng, khử ồn, thêm nhạc nền, burn subtitle — tất cả trong 1 pass FFmpeg.
ffmpeg -y \
-i raw/file-goc.MOV \
-stream_loop -1 -i work/bgm-piano.mp3 \
-filter_complex "
[0:a]highpass=f=90,afftdn=nr=15:nf=-30,loudnorm=I=-14:TP=-1.5[voice];
[1:a]volume=0.10,afade=t=in:st=0:d=2[bgm];
[voice][bgm]amix=inputs=2:duration=first;
[0:v]scale=1080:1920,setsar=1[bg];
[bg]subtitles=work/transcript-burn.srt:fontsdir=work/fonts:force_style='PlayResX=1080,PlayResY=1920,Fontname=Playfair Display,Fontsize=58,Bold=1,PrimaryColour=&HFFFFFF&,OutlineColour=&H000000&,BorderStyle=1,Outline=6,Alignment=2,MarginV=180'[v]
" \
-map "[v]" -map "" \
-c:v h264_videotoolbox -b:v 4M -pix_fmt yuv420p \
-c:a aac -b:a 192k \
-shortest -movflags +faststart \
output/video-final.mp4
3 số quan trọng để điều chỉnh:
volume=0.10— nhạc nền 10%. Muốn nhỏ hơn thì 0.05, muốn to hơn 0.15Fontsize=58— cỡ chữ subtitle. Video 9:16 mobile để 55-70, video 16:9 desktop để 30-45MarginV=180— khoảng cách subtitle với đáy. 9:16 để cao 150-250 tránh UI TikTok/IG che
Tại sao 1 câu lệnh nhanh hơn CapCut?
Không phải mình chê CapCut — mình vẫn dùng CapCut cho các phần cần sáng tạo. Nhưng 80% việc là chuẩn hoá âm lượng, khử ồn, thêm subtitle — đó là các thao tác giống hệt nhau cho mọi video.
Với CapCut mình phải click qua 8-10 menu × 15 giây mỗi video. Với 1 câu lệnh Terminal thì clip 26 giây ra file MP4 hoàn chỉnh trong 35 giây.
Ai làm 5-10 video/ngày sẽ hiểu tại sao mình xây pipeline này.
Số liệu thực từ video demo
| Chỉ số | Raw gốc | Sau biên tập |
|---|---|---|
| Kích thước file | 42.5 MB (HEVC 12.7 Mbps) | 14 MB (H.264 4 Mbps) |
| Loudness | -22.99 LUFS (nhỏ) | -14 LUFS (chuẩn YouTube) |
| Codec | HEVC (phone cũ không phát) | H.264 (mọi thiết bị) |
| Subtitle tiếng Việt | Không có | 8 chunk burn-in Playfair Bold |
| Nhạc nền | Không có | Piano 10% royalty-free |
| Thời gian xử lý | — | ~35 giây trên M-series Mac |
Tải bộ công cụ miễn phí
Bao gồm hướng dẫn chi tiết 6 bước, script Python fix typo tiếng Việt tự động, font Playfair Display hỗ trợ đầy đủ dấu tiếng Việt, và danh sách 5 nguồn nhạc nền miễn phí không dính bản quyền YouTube.
Không cần đăng ký · Không email · Dùng thoải mái cá nhân + thương mại
Có câu hỏi hoặc chia sẻ quy trình biên tập video của bạn? Bình luận bên dưới hoặc gửi mình qua Facebook. Đăng ký YouTube @letandao.official để xem thêm các mẹo hệ thống hoá công việc.