[FFmpeg] Các câu lệnh cơ bản trong việc edit video.
FFmpeg là một phần mềm
xử lý video,audio (và cả ảnh) rất mạnh,nhỏ gọn không cần cài đặt.Tuy nhiên
nhược điểm của nó là không có giao diện đồ họa,bạn sẽ phải gõ từng dòng
lệnh.Mình xin giới thiệu tới các bạn một vài lệnh cơ bản,hi vọng sẽ hữu ích cho
các bạn khi phải xử lý video.
Chuẩn bị
Trong các phiên bản hiện tại khi giải nén ra bạn ko
còn thấy file ff-prompt.bat nữa,mình cũng ko
biết tại sao họ lại bỏ đi,nhưng có nó dùng rất tiện nên mình gửi các bạn link download file này.
Để bắt đầu sử dụng, bạn tiến hành di chuyển tập tin
media mình cần làm việc vào thư mục “bin” . Ở đây mình sẽ sử dụng tên tập tin
mặc định đặt là “test.mp4” để làm ví dụ.Bạn bật ff-frompt.bat lên và gõ các lệnh vào.
Một vài tham số cơ bản
Trong các lệnh sẽ được trình bày dưới đây sẽ xoay quanh một vài tham số cơ bản như
-i test.mp4 Nhập file đầu vào tên là test.mp4
-c:v Codec của video đang xử lý
-c:a Codec của audio đang xử lý
-map 0:0 Chỉ định luồng đầu tiên của file đầu vào thứ 0 sẽ được xử lý (thường dùng trong trường hợp có nhiều file đầu vào, ví dụ bạn muốn mux video của file thứ 0 với audio của file thứ 1)
-vf Gọi filter đồ họa xử lý 1 tác vụ nào đó
-an Khử audio
-vn Khử video
......
Các tham số khác sẽ được trình bày trong từng câu lệnh cụ thể.
Phân tách các luồng (stream) audio và video nếu cần
Trong 1 file video như các bạn thường ngày vẫn dùng có thể có rất nhiều luồng như: luồng video,luồng audio, luồng subtiles.Một vài file phim hd có thể có 2 luồng audio (tiếng anh và tiếng việt chẳng hạn)
Trong các lệnh sẽ được trình bày dưới đây sẽ xoay quanh một vài tham số cơ bản như
-i test.mp4 Nhập file đầu vào tên là test.mp4
-c:v Codec của video đang xử lý
-c:a Codec của audio đang xử lý
-map 0:0 Chỉ định luồng đầu tiên của file đầu vào thứ 0 sẽ được xử lý (thường dùng trong trường hợp có nhiều file đầu vào, ví dụ bạn muốn mux video của file thứ 0 với audio của file thứ 1)
-vf Gọi filter đồ họa xử lý 1 tác vụ nào đó
-an Khử audio
-vn Khử video
......
Các tham số khác sẽ được trình bày trong từng câu lệnh cụ thể.
Phân tách các luồng (stream) audio và video nếu cần
Trong 1 file video như các bạn thường ngày vẫn dùng có thể có rất nhiều luồng như: luồng video,luồng audio, luồng subtiles.Một vài file phim hd có thể có 2 luồng audio (tiếng anh và tiếng việt chẳng hạn)
Xuất video
ffmpeg -i test.mp4
-vcodec copy -an test2.mp4
Xuất audio
ffmpeg -i test.mp4 -vn
-acodec copy test2.mp4
Xuất sub subtitles
(sortsub)
ffmpeg -i test.mp4 -vn
-an -scodec copy test2.txt
Chú ý: Container Mp4
không hỗ trợ luồng phụ đề riêng (Nếu có là đã ReEncode vào Video)
Xử lý video
Rotate video
Một số video quay từ
điện thoại thường bị quay ngược kích thước (Có tham số rotate trong info)
Loại bỏ tham số rotate
trong info,trả về chiều gốc của video
ffmpeg -i test.mp4 -c
copy -metadata:s:v:0 rotate=0 test2.mp4
Quay video theo hướng
mong muốn
ffmpeg -i test2.mp4
-vf "transpose=1" -c:a copy test3.mp4
0 = 90 Ngược chiều kim
đồng hồ và lật video
1 = 90 Theo chiều kim
đồng hồ
2 = 90 Ngược chiều kim
đồng hồ
3 = 90 Theo chiều kim
đồng hồ và lật video
Convert video
ffmpeg -i test.flv
-c:v libx264 -c:a aac test2.mp4
Thay dổi kích thước
video
ffmpeg -i test.mp4 -s
1280*720 -c:a copy test2.mp4
Cut video
-ss thời điểm bắt đầu
cắt (dùng -ss 00:00:00.000 nếu muốn cắt chính xác đến mili giây)
-t thời gian cắt
Ví dụ cắt 3,5 giây từ
thời điểm đầu video
ffmpeg -i test.mp4
-codec copy -ss 00:00:00.000 -t 00:00:03.500 test2.mp4
Split video
ffmpeg -i test.mp4 -t
1 test2.mp4 -ss 00:00:01 test3.mp4
Join nhiều video
ffmpeg -f concat -safe
0 -i mylist.txt -c copy join.mp4
nội dung mylist.txt:
# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
Mux video và audio
ffmpeg -i test.mp4 -i
test2.m4a -c copy test3.mp4
Crop video
-filter:v
"crop=out_w:out_h:x:y"
Trong đó:
out_w là số pixel
chiều rộng của video xuất ra
out_h là số pixel
chiều cao của video xuất ra
x và y là tọa độ chiều
rộng và cao (pixel) của điểm bắt đầu crop
Ví dụ:
Ta sử dụng thêm ffplay
để xem trước file đã cắt
ffplay -i test.mp4
-filter:v "crop=1280:720:100:100"
Nếu các thông số đã
hợp lý thì ta sẽ crop thật
ffmpeg -i test.mp4
-filter:v "crop=1280:720:100:100" -c:a copy test2.mp4
Encode phụ đề vào video
ffmpeg -i test.mp4 -vf
"ass=subtitles.ass" -c:a copy test2.mp4
Add logo vào video
-filter_complex
"overlay=x:y"
x,y là số pixel tính
chiều dài và chiều cao tính từ góc trên cùng bên trái
Ví dụ căn giữa
ffmpeg -i test.mp4 -i
logo.png -filter_complex
"overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" test2.mp4
main_w – chiều rộng
video gốc
main_h – chiều cao
video gốc
overlay_w – chiều rộng
logo
overlay_h – chiều cao
logo
Xử lý audio
Convert audio
ffmpeg -i test.m4a
-c:a libmp3lame -ab 128k test2.mp3
ffmpeg -i test.wav
-c:a aac -ab 128k test2.mp3
ffmpeg -i test.mp4 -vn
-c:a pcm_s16le -ar 44100 -ac 2 test2.wav
Cut,join audio tương
tự như video