Làm việc xung quanh Giới hạn FFMPEG Mod2


0

Tôi muốn sử dụng ffmpeg để xử lý hàng loạt một thư mục các tệp video có kích thước, mã hóa khác nhau, v.v.

Chúng tôi đang sử dụng kịch bản dưới đây. Vấn đề là chúng tôi đang tạo một video mà từ đó một quá trình tiếp theo sẽ trích xuất các lát rộng 3p. Do đó, một lý tưởng sẽ có mod 3 chiều rộng. Nhưng 264 chỉ mong đợi mod 2. Bạn có thể thấy rằng chúng tôi đang làm việc với mod 6. Nhưng trong một số tệp video nhỏ hơn, điều này giới thiệu các tạo tác không mong muốn.

Câu hỏi chi tiết là: Có cách nào để đạt được mod 3, có lẽ bằng cách tận dụng sự biến thái?

ffmpeg -i "$f" \ -vf 'scale=-6:300' \ -c:v h264 -preset "medium" -r 24 \ -map 0:a \ -map 0:v \ -map 0:s \ -map_metadata 0 \ -c:a aac -ac 1 \ -c:s copy \ -y "$partname"

Câu trả lời:


0

Đó không phải là một giới hạn tuyệt đối. Nó áp dụng khi định dạng pixel đầu ra có các mặt phẳng sắc độ phụ, như yuv420p, yuv422p..v.v.

Nếu quy trình tiếp theo của bạn có thể xử lý yuv444p, thì bạn chỉ cần chạy

ffmpeg -i "$f" -vf 'scale=-3:300,format=yuv444p' \
       -r 24 -c:v libx264 -preset "medium" -map 0:a -map 0:v -map 0:s -map_metadata 0 \
       -c:a aac -ac 1 -c:s copy -y "$partname"

Nhưng nếu nó chỉ có thể xử lý yuv420p, thì bạn có thể đệm đầu ra tỷ lệ với màu đen và yêu cầu ứng dụng của bạn loại bỏ lát rộng 1 px cuối cùng.

ffmpeg -i "$f" -vf 'scale=-3:300,pad=iw+1:ih' \
       -r 24 -c:v libx264 -preset "medium" -map 0:a -map 0:v -map 0:s -map_metadata 0 \
       -c:a aac -ac 1 -c:s copy -y "$partname"
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.