Tôi có MacBook Pro 15 inch 2017 chạy Mac OS X 10.13 (High Sierra):
Màn hình mặc định hỗ trợ độ phân giải màn hình lên tới 2880x1800
, mặc dù độ phân giải tối đa có thể chọn thông qua UI tiêu chuẩn bị giới hạn 1920x1200
(xem câu hỏi này ):
Bây giờ, tôi đang cố gắng ghi lại một bản ghi toàn màn hình thông qua ffmpeg
, sử dụng avfoundation
thiết bị, ở độ phân giải đầy đủ (nghĩa là không lấy mẫu phụ):
ffmpeg -y -v error -hide_banner -f avfoundation -i 1:none -threads 0 -f mp4 -vcodec mpeg4 -r 25/1 -qscale:v 1 output.mp4
Thật kỳ lạ, khi độ phân giải màn hình thay đổi giữa 1024x640
và 1920x1200
(nghĩa là có thể chọn thông qua "danh sách tỷ lệ" trong tùy chọn Mac OS X ), kích thước của trình raster video kết quả luôn gấp bốn lần độ phân giải màn hình:
1024x640
→2048x1280
- ...
1920x1200
→3840x2400
Mặt khác, nếu tôi đặt độ phân giải màn hình ở mức tối đa khi 2880x1800
sử dụng screenresolution
tiện ích, kích thước ffmpeg
đầu ra sẽ giống hệt với độ phân giải màn hình.
Trong cả hai trường hợp, -video_size
tùy chọn sẽ bị bỏ qua ffmpeg
.
Những điều trên chỉ đúng với màn hình tích hợp: đối với mọi màn hình ngoài, độ phân giải màn hình và độ phân giải video đã chụp luôn giống nhau, bất kể mức độ tỷ lệ.
Câu hỏi:
- Tại sao
ffmpeg
(hoặc, đúng hơn,avfoundation
thiết bị đầu vào) thể hiện sự không nhất quán như vậy? - Làm cách nào để buộc tôi
ffmpeg
luôn sử dụng độ phân giải màn hình hiện tại khi chụp màn hình? Tôi thà không cho phép lấy mẫu phụ (-vf scale=...
) ảnh hưởng đến kích thước raster kết quả.