Tôi ghi lại máy tính để bàn của mình với avconv (còn gọi là ffmpeg) và sau đó mở rộng nó thành 720p.
Gần đây tôi đã thêm vào tập lệnh của mình để họ có thể chọn một cửa sổ với xwininfo và nó sẽ ghi lại một cửa sổ cụ thể.
Tuy nhiên, nếu định dạng đầu ra không chia hết cho 2 bộ mã hóa sẽ bị lỗi và tôi không nhận được video của mình.
Có cách nào khắc phục điều này trong ffmpeg để tôi không phải thực hiện một loạt phép toán thủ công trong bash để đặt các giá trị tỷ lệ không?
Có thể có bộ lọc tỷ lệ trừ / thêm một cho chiều rộng / chiều cao nếu chúng không đồng đều? (tròn?)
Có thể áp dụng một bộ lọc khác sau quy mô ban đầu có thể thực hiện điều này? (Điều này sẽ làm tròn các video có kích thước đầu vào không đồng đều và không có tỷ lệ)
#!/bin/bash
avconv \
-f x11grab -r $fps -s $capturesize -i :0.0$offset \
-vcodec libx264 \
-vf scale=-1:720 \
-pre:v lossless_ultrafast \
-threads 4 \
-y $@
Một số danh sách gửi thư cũ đề xuất một round()
chức năng bạn có thể sử dụng trong bộ lọc nhưng tôi dường như không thể hiểu đúng cú pháp. Nếu nó hoạt động, một scale=round(iw,2):round(ih,2)
bộ lọc được áp dụng ở cuối sẽ giải quyết tất cả các vấn đề của tôi cùng một lúc. iw
và ih
dường như không hoạt động.
ceil
thay thếtrunc
để có được số cặp cao hơn như trường hợp 16: 9 480p