2011-08-07 31 views
6

Tôi đang cố gắng cắt khung hình bằng ffmpeg và tôi muốn tự động chia tỷ lệ hình ảnh đã cắt. tôi thấy một tùy chọn ở bộ lọc av: http://ffmpeg.org/libavfilter.html#SEC41ffmpeg: chiều rộng/chiều cao đầu ra của quy mô không hoạt động

./ffmpeg -i video.mp4 -vf "crop = 640: 480, quy mô = ow: oh" -f mpegts udp: //127.0.0.1: 1234

tôi nhận được một lỗi: lỗi khi đánh giá sự biểu hiện 'oh'

Trả lời

19

Hãy thử điều này:

./ffmpeg -i video.mp4 -vf "scale=640:ih*640/iw, crop=640:480" -f mpegts udp://127.0.0.1:1234 

Trên mã đầu tiên sẽ mở rộng quy mô các video sang 640 và duy trì chiều cao tỉ lệ, sau đó cắt để 640x480.

+1

Cây trồng chọn phần nào để cắt? Có đảm bảo luôn lấy chính xác trung tâm '640x480' của video không? – user779159

0

Bạn thực sự cần phải thay thế owoh với những con số, đại diện cho chiều rộng và chiều cao để mở rộng video để tương ứng.

+0

tôi cần phải thay đổi các cửa sổ cây trồng tự động (Tôi đã đã thực hiện một vài thay đổi trên ffmpeg) và tôi muốn mở rộng nó theo cửa sổ cắt thực tế. Khi tôi hiểu các giá trị 'ow' và 'oh' nên thực hiện công việc, phải không? –

+0

Không. Bạn phải đặt số nơi các tài liệu nói 'ow' và' oh'. –

+0

Thay vì ow và oh (không phải là hằng số), bạn có thể sử dụng các biểu thức ARE hằng số như out_w và out_h. – BrainSlugs83

2

Tôi giả sử bạn đang nhận được:

Error when evaluating the expression 'oh'. 
Maybe the expression for out_w:'ow' or for out_h:'oh' is self-referencing. 

Bởi vì bạn cố gắng thiết lập đầu ra w/h với sản lượng w/h ?! Những gì bạn muốn làm là

ffmpeg -i video.mp4 -vf "crop=640:480,scale=iw:ih" -f mpegts udp://127.0.0.1:1234 

Tức là, thiết lập đầu ra w/h với chiều rộng đầu vào (iw) và chiều cao đầu vào (ih) là bao nhiêu.

Lưu ý rằng bạn sẽ gặp lỗi nếu video nguồn nhỏ hơn những gì bạn cố gắng cắt thành (640: 480). Bạn có thể sử dụng cú pháp biểu thức của ffmpeg để kiểm tra đầu tiên nếu một cây trồng/quy mô là cần thiết để tránh lỗi này.

Các vấn đề liên quan