2

Как я могу изменить размер видео до 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 ответ1

3

Я немного устал от сценариев 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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .