Làm cách nào tôi có thể cắt video với ffmpeg?


172

Tôi có một tập tin MP4 của một bản ghi màn hình mà tôi cần phải cắt xuống. Làm cách nào tôi có thể thực hiện việc này mà không cần sử dụng các công cụ đắt tiền như Adobe Premier hoặc Final Cut? Tôi thích ffmpegbởi vì tôi đã sử dụng nó trước đây.

Câu trả lời:


264

Sử dụng cropbộ lọc :

ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4

Trong đó các tùy chọn như sau:

  • out_w là chiều rộng của hình chữ nhật đầu ra
  • out_h là chiều cao của hình chữ nhật đầu ra
  • xychỉ định góc trên cùng bên trái của hình chữ nhật đầu ra

Ảnh gốc

ảnh gốc
Ảnh gốc 320x240

ví dụ 1

80x60

Để cắt phần 80 × 60, bắt đầu từ vị trí (200, 100):

ffmpeg -i in.mp4 -filter:v "crop=80:60:200:100" -c:a copy out.mp4
  • Âm thanh được truyền phát trong ví dụ này, vì vậy việc mã hóa lại được tránh.

Ví dụ 2

dưới cùng bên phải quý

Để cắt quý dưới cùng bên phải:

ffmpeg -i in.mp4 -filter:v "crop=in_w/2:in_h/2:in_w/2:in_h/2" -c:a copy out.mp4

Điều này giống như:

ffmpeg -i in.mp4 -filter:v "crop=320/2:240/2:320/2:240/2" -c:a copy out.mp4

Điều này giống như:

ffmpeg -i in.mp4 -filter:v "crop=240:120:240:120" -c:a copy out.mp4
  • Bạn có thể tham khảo kích thước hình ảnh đầu vào với in_win_hnhư trong ví dụ đầu tiên này. Chiều rộng và chiều cao đầu ra cũng có thể được sử dụng với out_wout_h.

Ví dụ 3

20 pixel từ trên xuống và 20 từ dưới lên

Cắt 20 pixel từ trên xuống và 20 từ dưới lên:

 ffmpeg -i in.mp4 -filter:v "crop=in_w:in_h-40" -c:a copy out.mp4
  • Bộ lọc sẽ tự động căn giữa cây trồng nếu xyđược bỏ qua, chẳng hạn như trong ví dụ này.

Xem trước

Bạn có thể lấy một vụ mùa (heh heh) và xem trước nó trực tiếp với ffplay:

ffplay -i input -vf "crop=in_w:in_h-40"

Bằng cách này bạn có thể thử nghiệm và điều chỉnh cắt xén của mình mà không cần phải mã hóa, xem, lặp lại.

Ghi chú

  • crop tài liệu lọc

  • Bộ mã hóa mặc định cho MP4 là libx264(video H.264) hoặc mpeg4(video MPEG-4 Phần 2) tùy thuộc vào bản ffmpegdựng của bạn . Xem FFmpeg Wiki: Hướng dẫn mã hóa video H.264 để biết thêm.

  • Thay vì cắt xén và mã hóa lại, hãy xem xét cắt xén khi phát lại. Điều này là có thể với bất kỳ người chơi đáng sử dụng.

  • Cổ ffmpegbuilds sử dụng -croptop, -cropbottom, -cropleft, -croprighttùy chọn thay vì các cropbộ lọc. Nếu đây là trường hợp cho bạn thì có được một hiện đạiffmpeg . Phát triển rất tích cực và không có lý do để sử dụng đồ cổ.


2
Điều này hoạt động với 'avconv' bây giờ.
Joce

Tôi có 1923x1080 và muốn 1920x1080. Đây là lời khen tôi đã thử: /Users/kukodajanos/Workspace/ffmpeg -i /Users/kukodajanos/Desktop/video_640x480-2.mp4 -filter:v "crop=1920:1080:0:0" -c:a copy /Users/kukodajanos/Desktop/video_640x480-4.mp4nhưng bộ phim gốc được trả lại.
János

@Joce JFYI avconv là một phần của libav - một nhánh của ffmpeg
andrybak

1
đáng để đề cập đến kỹ thuật này (với cropbộ lọc) mã hóa lại video, xem stackoverflow.com/questions/33378548/NH nếu mã hóa lại vấn đề cho bạn
abernier

1
chỉnh sửa để thay đổi lỗi thời -filter:vđể cập nhật hơn và đơn giản hơn để nhập -vf. Chúc mừng!
Anh Cả Geek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.