Crop video là việc cắt nhỏ video về mặt kích thước. Bài viết này, mình sẽ tìm hiểu về câu lệnh cơ bản để crop video với FFmpeg.
Crop video với FFmpeg
Câu lệnh cơ bản
ffmpeg -i input.mp4 -vf "crop=w:h:x:y" output.mp4
Trong đó:
- -i là cờ dùng để xác định input, sau đó là tên file (input.mp4)
- -vf dùng để thông báo việc sử dụng video filter. Tiếp theo đó là công thức sử dụng. Để crop video với FFmpeg thì mình sử dụng công thức là
crop=w:h:x:y
.- w: là chiều rộng video mà bạn muốn thu được.
- h: là chiều cao video mà bạn muốn thu được.
- x: là toạ độ trên trục x điểm top, left của video mong muốn, mặc định x = 0.
- y: là toạ độ trên trục y điểm top, left của video mong muốn, mặc định y = 0.
- output.mp4 là tên file output
Hệ trục toạ độ
Có thể bạn vẫn chưa hiểu rõ câu lệnh trên cho lắm. Nên mình đã chuẩn bị một hình minh hoạ cho bạn dễ hiểu hơn:
Ví dụ minh hoạ
Giả sử mình có một video với độ phân giải 1920x1080. Mình muốn crop lấy video với độ phân giải 1280x720 và điểm top, lef có toạ độ là (320, 180).
Khi đó, mình có w = 1280, h = 720, x = 320, y = 180. Suy ra câu lệnh cần dùng là:
ffmpeg -i input.mp4 -vf "crop=1280:720:320:180" output.mp4
Sử dụng biến số
Trong ví dụ trên, mình cố tình cắt lấy video nằm ở chính giữa của video gốc (cách đều 4 phía).
Vì mình đã chủ động tính toán:
- x = 320 = (1920 - 1280) / 2
- y = 180 = (1080 - 720) / 2
Hay tổng quát hoá: để cắt lấy video có kích thước w, h từ video gốc W, H và cách đều 4 phía thì:
- x = (W - w) / 2
- y = (H - h) / 2
Trong đó:
- Giá trị w, h là giá trị mình mong muốn
- Giá trị W, H là giá trị kích thước video ban đầu. Dĩ nhiên, bạn có thể lấy được kích thước của video này thủ công. Hoặc bạn có thể sử dụng biến số có sẵn cung cấp bởi FFmpeg. Đó là in_w tương ứng với chiều rộng video gốc, in_h tương ứng với chiều cao video gốc.
Nếu áp dụng biến số này thì câu lệnh trong ví dụ trên trở thành:
ffmpeg -i input.mp4 -vf "crop=1280:720:(in_w-1280)/2:(in_h-720)/2" output.mp4
Lời kết
Trên đây là cách để crop video với FFmpeg. Nếu có gì thắc mắc hay góp ý, bạn vui lòng để lại câu hỏi xuống phía dưới. Mình sẽ cố gắng giải đáp nhé!
★ Nếu bạn thấy bài viết này hay thì hãy theo dõi mình trên Facebook/Youtube để nhận được thông báo khi có bài viết mới nhất nhé:
- Facebook Fanpage: Hướng dẫn phần mềm mã nguồn mở
- Youtube Channel: HD Opensource