Chuyển đổi video thành kích thước màn hình cố định bằng cách cắt và thay đổi kích thước


14

Tôi đã cố gắng tự mình tìm ra điều này, nhưng vô số lựa chọn chỉ gây khó khăn cho tôi.

Tôi muốn sử dụng lý tưởng ffmpeghoặc mencoder(hoặc một cái gì đó khác, nhưng hai cái tôi biết tôi đang làm việc) để chuyển đổi bất kỳ video đến thành kích thước màn hình cố định.

Nếu video rộng hơn hoặc quá ngắn đối với video, thì hãy cắt giữa video. Nếu đó không phải là kích thước phù hợp, thay đổi kích thước lên hoặc xuống để làm cho nó chính xác kích thước màn hình cố định.

Điều chính xác cuối cùng tôi cần là 720x480 trong AVI XVid với bản nhạc MP3.

Tôi đã tìm thấy rất nhiều trang cho thấy cách thay đổi kích thước thành độ phân giải tối đa, nhưng tôi cần video phải chính xác với độ phân giải đó (với các phần bổ sung bị cắt, không có thanh màu đen).

Bất cứ ai có thể cho tôi biết dòng lệnh để chạy - hoặc ít nhất là giúp tôi một số / hầu hết các cách đó? Nếu nó cần phải có nhiều dòng lệnh (chạy X để có độ phân giải, hãy thực hiện phép tính này và sau đó chạy Y với đầu ra của phép tính đó) Tôi có thể viết kịch bản đó.

Câu trả lời:


22

Một cái gì đó như thế này sẽ làm việc với các tham số thích hợp cho từng trường hợp:

Lưu ý: Câu trả lời ban đầu đã được đăng trong liên kết này: Làm cách nào tôi có thể cắt video bằng ffmpeg? ban đầu được đăng bởi tôi và chỉnh sửa nhiều lần để cập nhật nó lên các tùy chọn mới nhất trong các phiên bản mới nhất của ffmpeg. Rất cám ơn slhck , Jonathan. , Anton Rudeshko , LordNeckbeard và những người duy trì trong tương lai.


Trong các phiên bản gần đây của FFmpeg, hãy 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
Hình ả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 việc 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 thông tin.

  • 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.

  • Ancient ffmpegxây dựng đã qua 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ì hãy lấy một cái hiện đạiffmpeg . Phát triển rất tích cực và không có lý do để sử dụng đồ cổ.


Thêm điểm cho Xem trước với ffplaymà làm cho sử dụng ffmpegđể cắt đoạn video hoàn toàn khả thi kích thước màn hình trong thực tế.
SpeedCoder5
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.