Thay đổi kích thước video với độ rộng khác nhau thành tỷ lệ khung hình giữ chiều cao cố định với ffmpeg


17

Tôi muốn chuyển đổi nhiều tệp video thành flash video cho trang web của công ty chúng tôi. Tôi có một yêu cầu là tất cả các video phải ở định dạng 360p, vì vậy kích thước của chúng sẽ là Nx360.

FFMpeg sử dụng -s lập luận để xác định độ phân giải mong như W x H . Tôi không biết W idth, vì nó phụ thuộc vào tỷ lệ khung hình của tệp nguồn. Nếu nguồn là 640x480, mục tiêu sẽ là 480x360. Nếu nguồn là 848x480, mục tiêu sẽ là 636x360.

Có cách nào để làm điều đó với một số chuyển đổi của ffmpeg? Rằng nó sẽ duy trì tỷ lệ khung hình và tôi sẽ chỉ xác định chiều cao của video mục tiêu?

Tôi có thể dễ dàng giải quyết nó bằng cách tạo một chương trình sẽ khởi chạy ffprobe để lấy kích thước video nguồn, tính tỷ lệ khung hình và sau đó tính chiều rộng mới.

Câu trả lời:


15

Bạn có thể thử thêm bộ lọc video này:

-vf "scale=-1:360" 

-1 trong trường hợp này có nghĩa là biến / không xác định, do đó bộ lọc này thay đổi kích thước video để duy trì tỷ lệ khung hình của đầu vào, giữ 360 làm chiều cao.

Đối với tôi điều này đạt được kết quả tương tự mà bạn đang tìm kiếm.



6

Chưa có đủ điểm để nhận xét về câu trả lời hiện có, nhưng đây là câu trả lời của người dùng65600 và đi xa hơn khi các codec cụ thể yêu cầu chiều rộng / chiều cao chia hết cho 2 (ví dụ libx264)

Khi bạn sử dụng -1 (biến / không xác định), nó có thể trả về # lẻ. Để đảm bảo số chẵn #, bạn phải sử dụng một cái gì đó như trunc(ow/a/2)*2, nó sẽ tự động tính toán số chẵn gần nhất trong khi duy trì tỷ lệ khung hình.

-vf "scale=trunc(ow/a/2)*2:360"

Nguồn: https://ffmpeg.org/trac/ffmpeg/ticket/309


3

-vf "scale=trunc(ow/a/2)*2:360" không hoạt động vì lỗi "tự giới thiệu".

Thay vào đó, các công việc sau:

-vf "scale = -1: 360, scale = trunc (iw / 2) * 2: 360"

Do đó, việc tự tham chiếu được tránh bằng cách chia tỷ lệ liên tiếp và làm tròn được thực hiện trong bước thứ hai. Dễ thương phải không? :)


Tỷ lệ bộ lọc đơn giản 'scale = -1: 480; scale = trunc (iw / 2) * 2: 480 'không có chính xác một đầu vào và đầu ra. Lỗi mở bộ lọc!
digitalPBK
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.