[FFmpeg Tutorial] Crop video với FFmpeg

Posted on October 24th, 2018

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:

Hệ trục tọa độ trên video

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, Hcá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é!

Xin chào và hẹn gặp lại!


★ Nếu bạn thấy bài viết này hay thì hãy theo dõi mình trên Facebook để nhận được thông báo khi có bài viết mới nhất nhé: