[FFmpeg Tutorial] Cut video với FFmpeg

Posted on October 25th, 2018

Nếu như crop là cắt nhỏ video về mặt kích thước thì cut là cắt nhỏ video về mặt thời gian. Bài viết này mình sẽ tìm hiểu về cách cut video với FFmpeg.

Câu lệnh cơ bản

Ví dụ để cắt video từ thời điểm 2 giây, với thời lượng cắt là 3 giây, câu lệnh cần dùng là:

ffmpeg -i input.mp4 -ss 00:00:02.0000 -t 3 output.mp4

Trong đó:

  • -i là cờ dùng để xác định input, sau đó là tên file (input.mp4)
  • -ss (start timestamp) dùng để xác định thời điểm bắt đầu cắt video, theo định dạng (giờ:phút:giây:mili-giây). Trong câu lệnh trên 00:00:02.0000 ứng với thời điểm giây thứ 2. Ngoài ra, nếu bạn chỉ dùng -ss 2 thì FFmpeg cũng mặc định hiểu rằng, đó là thời điểm 2 giây.
  • -t là cờ dùng để xác định thời lượng bạn muốn cắt. Sau đó là con số chỉ thời lượng đó, ở đây là 3 giây.
  • output.mp4 là tên file output

Trong câu lệnh trên, ngoài tham số -t, bạn có thể sử dụng tham số -to để thay thế. Tham số** -to** dùng đề xác định thời điểm kết thúc bạn muốn cắt video. Ví dụ mình muốn cắt video ở thời điểm 5 giây thì có thể sử dụng một trong 2 câu lệnh dưới đây:

ffmpeg -i input.mp4 -ss 00:00:02.0000 -to 00:00:05.0000 output.mp4

# Hoặc
ffmpeg -i input.mp4 -ss 2 -to 5 output.mp4

Kết quả thu được hoàn toàn giống với câu lệnh ban đầu.

Tuy nhiên, có một điều bạn cần lưu ý là câu lệnh trên sẽ encode lại video dựa theo những tham số mặc định của FFmpeg. Nếu bạn muốn giữ nguyên thông tin video, không encode lại video thì mời bạn theo dõi phần dưới đây.

Không encode lại video

Để làm điều này, bạn có thể sử dụng thêm option -c copy (hoặc -vcodec copy với video-acodec copy với audio) để FFmpeg copy trực tiếp video từ input sang output mà không cần phải encode lại video nữa.

Điều này có 2 ưu điểm:

  • Giữ nguyên chất lượng video ban đầu
  • Giúp cắt video nhanh hơn

Câu lệnh cần dùng là:

ffmpeg -i input.mp4 -ss 2 -t 3 -c copy output.mp4

Lời kết

Trên đây là cách để cut 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ần bình luận. Mình sẽ cố gắng giải đáp.

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é: