Sách

Thứ Hai, 4 tháng 3, 2019

[ffmpeg Tutorial] 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ố -todù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 và -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!