AviSynth: как изменить размер видео до 480, сохранив соотношение сторон
Как я могу изменить размер видео до 480 пикселей в AviSynth, сохраняя соотношение сторон? Предположим, для простоты, билинейный размер.
я пробовал:
source = DirectShowSource("TheClip.avi")
resized = BilinearResize(source, target_height=480)
return resized
Но это дает ошибку
Ошибка скрипта: неверные аргументы для функции "BilinearResize"
Примечание: причина, по которой я не предоставляю width
в том, что я не знаю ширину. Сценарий используется медиасервером, который теперь принудительно использует AviSynth для выполнения изменения размера. Я не знаю размер любого видео, которое кто-либо может предпочесть для воспроизведения, но я знаю, что мне нужно, чтобы оно было изменено до x480.
я предполагаю, что AviSynth может сделать что-то вроде:
resized=BilinearResize(source, source.width*480/source.height, 480)
но это также не помогает:
Изменение размера: ширина назначения YUY2 должна быть четной
я мог бы продолжать идти, пытаясь найти способ AddBorders или Crop, чтобы сделать ширину mod4, mod8 или mod16. Или я мог бы спросить здесь, и, возможно, уже есть способ выполнить масштабирование с сохранением аспектов.
1 ответ
Я немного устал от сценариев Avisynth, но я думаю, что это должно сработать, чтобы получить ширину, основанную на целевой высоте 480 и заданном значении по модулю... Я не мог проверить это, так как у меня нет avisynth установлены...
srceH = source.height
srceW = source.width
AR = (float(srceW) / float(srceH))
targH = 480
targW = int(float(targH) * AR)
coMod = 4 # The codec modulo requirement
targW = ((targW / coMod) * coMod)