|
ОТ АВТОРАКаждый раз, когда я пытаюсь перегнать любимый фильм из DVD в DivX, я сталкиваюсь с двумя проблемами: как ограничить видеопоток, чтобы вписаться в размер CD и как корректно сделать обрезку исходного кадра, чтобы удовлетворить требованиям кодека и сохранить пропорции изображения. Поскольку формат DVD страдает разнообразием, эти проблемы возникали каждый раз, как только у меня появлялся новый фильм, и в какой-то момент мне это порядком надоело. Проанализировав проблему, я расписал пару формулок в Excelе, дабы облегчить себе расчёт. Но пользоваться этим оказалось неудобно - Excel - мощная штука, но со своими заморочками, да и не везде, оказывается, он ещё есть... В результате, я взял Visual Basic за основу и написал программу, выполняющую такой расчёт. Программа позволяет:
Ну, если с первой проблемой и её решением всё, в принципе, понятно - взять имеющийся в распоряжении объём носителя, длительность фильма и поделить одно на другое, то по поводу второй проблемы хочу пояснить поподробнее на конкретном примере. Вот реальный кадр с первого попавшегося под руку DVD-диска. Исходное изображение 720х480 точек, формат (соотношение сторон кадра) 4 : 3. Это означает, что любой нормальный видеоплейер будет выдерживать этот формат и автоматически преобразовывать исходное изображение в картинку, например, 720х540 или 512х384 и т.п., в зависимости от возможностей самого плейера и режимов окна вывода. То есть коэффициент масштабирования по X и по Y будет разный, но соотношение сторон всё равно будет 4 : 3. Обратим внимание, что изображение в кадре занимает не весь кадр, а только его часть. Сверху и снизу около 40 процентов занимает чёрная зона. При перегонке в тот же DivX нет никакого смысла жертвовать частью видеопотока для передачи этой информации. Необходимо осуществить обрезку кадра. Пусть мы хотим преобразовать видео из 720x... в 512x... Вопрос: сколько резать? Попробуем для начала так: убирём всё лишнее, обрезав исходный кадр непосредственно по границе изображения - сверху и снизу отмахнём по 109 точек, то есть 218 точек - долой! Что же получим в результате пропорциональных преобразований? А получим изображение размером 512х209,60. Дробное однако. А ещё вроде как есть рекомендация выдерживать кратность финального размера 16-ти. Значение 512 этому условию удовлетворяет, а вот 209... Так сколько надо резать? Расчёт показывает, что ближайшее меньшее значение составляет 200 точек, при этом финальный размер составит 512х224, что нас вполне устраивает - 224 - это целое число и при этом оно кратно 16-ти. А, например, для варианта 640х... надо сделать обрезку 192 и получить в результате 640х288. Кстати, этот вариант более предпочтительный, поскольку коэффициент масштабирования изображения по оси Y в этом случае будет равен единице (480-192)=288. Немного сложнее ситуация, когда надо выполнить обрезку не только по оси Y, но и по оси X. Но, в общем случае, задача формулируется так: при заданном исходных размере и формате (соотношении сторон) кадра найти такие комбинации обрезки по X и Y, чтобы выполнялось условие целочисленности и кратности финального размера. Решением этой задачи и занимается программа. ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕЭта программа требует регистрации. Тестовый период эксплуатации программы составляет 40 дней. По истечение этого срока, вы можете продолжать пользоваться программой, не регистрируя её, однако, возможно, что функциональность программы будет несколько ограничена. Для сохранения полной функциональности, необходимо зарегистрировать Вашу копию программы. Условия регистрации находятся здесь. Вследствие современного многообразия аппаратных и программных средств, автор не может гарантировать работоспособность этой программы на любом компьютере. ВНИМАНИЕ: ВЫ ИСПОЛЬЗУЕТЕ ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ НА СВОЙ СТРАХ И РИСК! АВТОР НЕ НЕСЁТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ВОЗМОЖНЫЕ УБЫТКИ В РЕЗУЛЬТАТЕ РАБОТЫ ЭТОЙ ПРОГРАММЫ! Все права на эту программу принадлежат автору. Вы не можете тиражировать и продавать эту программу без согласия автора. ФАЙЛЫДля Win32:
БЛАГОДАРНОСТИ
Спасибо всем, кто не мешал. РЕГИСТРАЦИЯА оно вам нужно?
Если Вам понравилась эта программа, и Вы хотите "поддержать отечественного
производителя", можете перевести любую сумму (сколько считаете нужным) на
мой счёт в Процессинговом центре Экомбанка системы Яндекс.Деньги, номер счёта: 4100111060472
АДРЕС
Адрес: http://vsc1.narod.ru © 2003 KA-studio |