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)
Другие вопросы по тегам