Cách thay đổi kích thước video để làm cho nó nhỏ hơn với FFmpeg


103

Có thể thay đổi kích thước video của tôi để làm cho chúng nhỏ hơn với FFmpeg không?

Tôi có kích thước video gốc là 1024x576, bây giờ tôi muốn thay đổi kích thước video thành 720x480 để đáp ứng yêu cầu.

Tôi có thể làm cái này như thế nào?


ffmpegcó thể không được chấp nhận, xem tại đâyđây
nutty về natty

13
@nuttyaboutnatty Các tin nhắn "không dùng nữa" chỉ áp dụng cho "cũ, chết, giả ffmpeg" từ ngã ba Libav, không phải ffmpegtừ FFmpeg đã trả lại vào 15.04.
llogan

Câu trả lời:


165

Ví dụ cơ bản nhất là đây:

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

Sử dụng các scalebộ lọc sẽ cung cấp linh hoạt hơn:

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

Các -1sẽ cho ffmpeg để tự động chọn chiều cao chính xác liên quan đến độ rộng cung cấp cho giữ nguyên tỷ lệ khía cạnh. -1cũng có thể được sử dụng cho chiều rộng nếu bạn cung cấp một chiều cao nhất định.


Một nhược điểm của thang đo khi sử dụng libx264là bộ mã hóa này yêu cầu các giá trị chẵn và tỷ lệ có thể tự động chọn một giá trị lẻ dẫn đến lỗi : width or height not divisible by 2. Bạn có thể cho biết tỷ lệ để chọn một giá trị chẵn cho một chiều cao nhất định (720 trong ví dụ này):

scale="trunc(oh*a/2)*2:720"

... hoặc chiều rộng cho trước (1280 trong ví dụ này):

scale="1280:trunc(ow/a/2)*2"

Lưu ý rằng bản dựng ffmpeg của bạn có thể phàn nàn về việc không nhận ra -choặc -filtertùy chọn. Nó cũng có thể không hỗ trợ scale. Trong trường hợp đó, bạn nên sử dụng một ffmpeg mới hơn, mà bạn có thể tải xuống dưới dạng bản dựng tĩnh hoặc tự biên dịch .


1
Tôi đã thử ffmpeg -i output.mkv -filter:v scale=720:-1 -acodec copy -threads 12 output_shrink.mkv(trong phiên bản ffmpeg 0.8.6-6: 0.8.6-0ubfox0.12.10.1) nhưng đã gặp lỗiUnrecognized option 'filter:v'
doug65536

6
Sau khi đào qua trang man cho ffmpeg nhiều lần tôi thấy rằng thay vì -filter:v, tùy chọn dường như đã được thay đổi thành -vf.
doug65536

2
@ doug65536 -filter:v-vfđều ổn cả. Phiên bản Ubuntu bạn đang sử dụng bị hỏng và lỗi thời, nó không thực sự là FFmpeg ffmpeg, mà là nhị phân được cung cấp bởi Libav (ngã ba FFmpeg) dưới cùng tên.
slhck

1
@MightyPork có lẽ bản dựng ffmpeg của bạn đã lỗi thời - vấn đề gì xảy ra?. Dù sao, điều này thực sự đã giúp tôi (với ffmpeg version 2.4.10) giảm kích thước của một số video lớn để giải phóng không gian - cảm ơn!
Wilf

4
'-C' là viết tắt của -codec, ': a' chỉ định (các) luồng âm thanh, 'bản sao' chỉ định codec sao chép, sao chép (các) luồng (trong trường hợp này là âm thanh) mà không cần mã hóa lại. Về cơ bản các luồng âm thanh sẽ đi qua. Điều này là phổ biến khi bạn chỉ thao tác luồng video.
jimhark

14

Tôi sử dụng các lệnh sau để thực hiện thay đổi kích thước cho video và hình ảnh. Đối với chiều rộng và chiều cao cố định -

ffmpeg -i input.avi -vf scale="720:480" output.avi

và nếu bạn muốn giữ lại tỷ lệ khung hình, chỉ cần cho chiều cao là -1 và nó sẽ tự động thay đổi kích thước dựa trên chiều rộng -

ffmpeg -i input.avi -vf scale="720:-1" output.avi

Nếu bạn muốn chia tỷ lệ dựa trên kích thước đầu vào, vd. giả sử giảm một nửa chiều rộng / chiều cao bạn có thể làm-

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

GHI CHÚ :

iw : input width
ih : input height

Có thể tải xuống bản dựng tĩnh từ - https://johnvansickle.com/ffmpeg/

Tài liệu: https://ffmpeg.org/ffmpeg.html#filter_005foption


Không làm việc. Bị mắc kẹt tại handler_name: Xử lý âm thanh
Rushi M Thakker

Tôi có một chất lượng video khủng với lệnh này. Tốt hơn nhiều nếu tôi tạo output.mp4, không phải avi. Vì vậy, vấn đề mở rộng.
sekrett
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.