AviSynth: как изменить размер видео до 480, сохранив соотношение сторон

3355
Ian Boyd

Как я могу изменить размер видео до 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 . Или я мог бы спросить здесь, и, возможно, уже есть способ выполнить масштабирование с сохранением аспектов.

2
Есть ли способ привести (source.width * 480 / source.height) к int или к чему-то еще? soandos 12 лет назад 0
Я уверен, что проблема в том, что ширина, которую он вычисляет, составляет примерно 691x480. Это конфликтует с YUY2, который хранит одно значение цвета для каждой * пары * пикселей; и это видео на одну пару коротких (должно быть 690x480 или 691x480) Ian Boyd 12 лет назад 0
Так есть ли функция округления? soandos 12 лет назад 0

1 ответ на вопрос

3
Peter.O

Я немного устал от сценариев 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) 
Вы пропустили настройку аспектной переменной. но после этого работает отлично, спасибо yoshco 12 лет назад 0
Спасибо * yoshco * ... Да, у меня было * AR * в одном месте и * аспект * в другом ... Изменено на * AR *. Peter.O 12 лет назад 0

Похожие вопросы