Продукты Pinnacle

         

Программа Flask


Для начала небольшая вводная лекция о

битрейте, разрешении, и качестве

. Битрейт определяет максимальное количество данных, которое может быть сгенерировано фильмом за определённое время. Битрейт устанавливается один раз, и именно он потом определяет, с каким качеством будет закодирован фильм.

Основные принципы которые необходимо понимать выбирая битрейт, просты. Чем меньше кадров в секунду имеет фильм, тем больший объём данных приходится на каждый конкретный кадр. Чем меньше разрешение фильма, тем более тщательной обработке подвергается каждый пиксель, и тем выше качество изображения. С количеством кадров в секунду особо не побалуешься, потому что могут возникнуть серьёзные проблемы с синхронизацией. Для PAL формата лучше вообще ничего не менять, и делать Divx фильм с "родным" количеством FPS, 25 кадров в секунду. Другое дело NTSC формат, в нём можно без всякого ущерба уменьшить количество FPS с оригинальных 30 до 23.976, что я и советую делать.

С изменением разрешения фильма имеется гораздо более широкий простор для деятельности, поэтому остановимся на этом вопросе подробнее. Когда битрейт установлен, то на каждый кадр приходится определённое количество информации, и увеличив или уменьшив размер кадра вы добъётесь только того, что на каждую отдельную точку будет приходиться больше или меньше данных. Чем данных больше, тем более тщательно обрабатывается точка, и тем выше качество картинки. Таким образом, если вдвое увеличить разрешение, то для получения такой же тщательности обработки каждого пикселя, битрейт придётся увеличить в четыре раза. Самое интересное, что при этом вы вовсе не обязательно добъётесь в двух или четырех кратного улучшения изображнеия. При масштабировании Divx не весь экран далеко не всегда можно с уверенностью отличить 640*480 от 480 *360. Поэтому очень часто фильмы записанные с более низким разрешением и более низким битрейтом, при просмотре в полноэкранном режиме выглядят гораздо лучше, чем те же фильмы в более высоком разрешением, и большим битрейтом. При этом, первый вариант, с низким разрешением и битрейтом ещё имеет и меньший размер файла. Вооружённые этими знаниями, вернёмся к нашим настройкам.


Итак, значение битрейт 910 kbit/sec, стоящее по умолчанию, даёт неплохое качество при приемлемых размерах файлов, и рассчитано на разрешение 512*384, или где-то близко к этому. Иногда встречаются фильмы, когда на такое разрешение ставят битрейт 1600-2100 kbit/sec. Кроме желания добиться оптимального качества, битрейт меняют тогда, когда хотят уложиться в определённый размер итогового файла (например, что бы уместить его на один CD). На самом деле нет способа, с помощью которого можно абсолютно точно вычислить размер конечного файла. Но примерно прикинуть можно. Всё что для этого надо, это перемножить битрейт на длину фильма в секундах. Не забудьте, только, поделить битрейт на 8, что бы получить значение не в БИТАХ в секунду, а в БАЙТАХ.

Выбрав видеокодек, надо выбрать звуковой кодек. Как показала моя практика, именно с реализацией звукового сопровождения бывает больше всего проблем. Несмотря на все усилия программистов работающих над Flask, он не лишён недостатков, и на разных компьютерах работает по разному, проявляя самые различные баги. Плюс существует немало модифицированных версий Flask, каждая работает по своему, и имеет свои уникальные баги. Наиболее часто эти баги проявляются именно в работе со звуком. Выбирая audiocodec наиболее логичным выбором было бы выбрать Divx ;) Audio, но выбор этот не лучший - качество звука не выдерживает никакой критики. Предпочтительней выбрать Mpeg Layer-3, более известный как MP3.

Сделав это, после кодировки можно получить сразу готовый фильм. Это в теории.

А на практике это не всегда так, и после многочасового кодирования можно получить файл, в котором звука либо не будет вообще, либо он будет записан неправильно. К тому же, возможна ситуация, когда этот файл не будет проигрываться стандартными плеерами. Причин этого печального явления я не знаю, возможно проблема не столько в Flask'e сколько во внешних аудиокодеках, используемых Flask'ом. Хотя, те же самые кодеки можно использовать в других программах, без таких проблем. Если среди читателей есть люди, которые считают себя крутыми программистами, и которым нечем заняться в свободное время, то они могут поковырять исходные коды Flask (



http://doom9.org/Software/Sources/FlasKMPEG_0594_Source.rar



), и попытаться его улучшить.

А пока, наилучшим выбором будет вообще не декодировать звук на этом этапе, и сбросить его на диск в том виде, в каком он записан на DVD диске. Про то, как это сделать будет написано ниже. Если же вы всё-таки хотите делать всё сразу, то ещё раз повторяю свой совет, перед тем как работать с самим фильмом, выберите какой-нибудь короткий ролик минуты на 2-3, и поэкспериментируйте на нём. Но учтите, что в силу каких то своих особенностей, flask может сглючить, если в него без перезагрузки загрузить несколько роликов подряд. Поэтому, после каждого эксперимента будет не лишним перезагрузить flask, а перед кодированием самого фильма желательно вообще перезагрузить компьютер.

Кроме выбора кодеков, в этом же окне можно выбрать несколько других опций. Пометив чекбокс Enable Watermark, получите возможность загрузить собственный логотип, который наложится поверх закодированного фильма, и которым Вы сможете помечать закодированные вами фильмы. Flask позволяет определить координаты, по которым логотип должен отображаться, и метод, по которому он будет налаживаться. Это Alpha, когда логотип становится полупрозрачным, Mask, когда прозрачными становятся только некоторые области, и Copy, когда логотип накладывается именно в том виде, в котором он нарисован.





Ещё одной опцией, выставляемой в этом окне, является возможность указать flask'у, что бы он разбивал полученный фильм на несколько частей заданной длины. К сожалению, длина задаётся не в килобайтах, а в секундах. Если кого это сильно огорчает, то исходники Flask'а можно скачать прямо от нас (

http://doom9.org/Software/Sources/FlasKMPEG_0594_Source.rar

) :-)

Закончив с окном Output Format Options, можно переходить к пункту

Global Project Options (Export Movie Settings)


, в котором, как видно из названия, находится всё самое интересное.

Первой закладкой в открывшемся окне является

Video


.



Это окно разбито на несколько разделов. В первом из них можно выбрать разрешение, которое должен иметь итоговый фильм. Каких либо однозначных рецептов какими должны быть эти цифры, как уже говорилось, нет. Подробнее про то, на что надо ориентироваться выбирая разрешение, читайте несколько выше, раздел о битрейте, разрешении и качестве. Здесь добавить можно только то, что чем выше разрешение, тем мощнее компьютер понадобиться для того, что бы проиграть фильм без тормозов. Единственным условием, которое надо соблюсти, это правильные пропорции. Набор стандартных разрешений, которые используются при кодировании большинства фильмов, таков:



1:2. 35 movies: 720x304, 640x272, 576x248, 512x216, 480x208, 400x168

1:1.85 movies: 720x392, 640x344, 576x312, 512x280, 480x256, 400x216

1:1.33 movies: 720x540, 640x480, 576x432, 512x384, 480x360, 400x300

Что бы не ошибиться ненароком, нажмите на кнопку Show Out Pad, и откроется окно со случайно выбранным из фильма кадром, на котором сможете поизменять размеры и посмотреть, что получится.

После того, как выбрано и проверенно желаемое разрешение, можно выбрать

iDTC (Inverse Discrete Cosine Transform)


опцию. Эта опция определяет алгоритм, который будет использоваться при декодировании mpeg потока идущего с DVD диска. По умолчанию здесь стоит MMX iDTC, что является лучшим выбором. Конечно, при том условии, что ваш процессор поддерживает MMX инструкции. С другой стороны, если он не поддерживает (а если вы сумели запустить Flask, то это значит что ваш CPU в лучшем случае iPPro 220 Mhz), то я бы вообще не советовал заниматься рипаньем DVD, и серьёзно подумать об апгрейде.

Следующей опцией, доступной для редактирования, является

fps


, количество кадров в секунду. Зависит оно от того, под какую систему рассчитан фильм, 25 кадров для PAL фильмов и 30 для NTSC. Обычно flask самостоятельно определяет это значение, и ничего изменять здесь не приходится. Как уже говорилось, можно уменьшить это значение до 23.976 для NTSC фильмов, что бы с бОльшей пользой использовать драгоценный битрейт, и не стоит менять это значение с 25 для PAL фильмов, иначе вполне вероятно, что придётся решать проблемы с синхронизацией.

Последним разделом в этом окне является раздел

Video Structure


. Большинство фильмов на DVD записано в прогрессивном виде и при их декодировании не требуется ничего менять в этой опции. Другое дело рекламные ролики, предназначенные для показа по телевизору, зачастую они записаны в чрезстрочном виде. Если ролик разбит по bob алгоритму, то для получения исходной картинки достаточно просто отметить чекбокс reconstruct progressive image. Если использован weave, то придётся воспользоваться опцией Deinterlace video. Значение Threshold придётся подбирать экспериментальным путём, в каждом конкретном случае, я, обычно, начинаю со значения 10.



Следующая закладка

Audio


.



Если хотите получить сразу готовый файл, отметьте пункт Decode audio, и надейтесь на то, что ничего не сглючит, и вы получите нормально закодированный фильм без проблем с синхронизацией :-)

Если есть желание несколько обезопасить себя то выбирайте пункт Direct stream copy, с помощью которого сохраните звуковую дорожку именно в том виде, в котором она записана на DVD. Я предпочитаю этот метод по нескольким причинам. Во-первых, аудио и видео можно соединить и потом, причём аудио при этом можно сжать каким угодно алгоритмом. Кодирование только одного аудио занимает в несколько раз меньше времени, чем кодирование видео, поэтому я предпочитаю потратить лишнее время на работу с аудиопотоком, но быть настолько уверенным, насколько это возможно, что самый долгий этап в рипаньи фильма, кодирование видео, пройдёт без малейших проблем. К тому же, если что-либо пойдёт не так, то не придётся переделывать всю работу, а только часть. И как я уже говорил выше, именно кодирование звука чаще всего приводит к проблемам. Второй причиной, по которой я пользуюсь этим методом, является возможность использовать в готовом фильме оригинальную, многоканальную *.ac3 дорожку. В этом случае, используя для просмотра Divx фильма плеер, который понимает этот *.ac3, и умеет разводить его по разным каналам (например PowerDVD), можно получить такой же качественный звук, как был на оригинальном DVD диске. Очевидным минусом этого метода является значительно больший размер файла.

Если вам не надо декодировать аудио вообще, отметьте пункт Don't process audio.

Кроме всего вышеперечисленного, необходимо отметить чекбокс

Same as input

в разделе Sampling frequency. Из-за какой то ошибки flask не всегда может правильно определить sampling rate, поэтому, если так случилось, снимите этот флажок, поменяйте значение на правильное (для DVD фильмов обычно это 48000), и поставьте его снова. В итоговом фильме, часто используется sampling rate 44100, для уменьшения размеров файла при практически незаметном падении качества, но flask и так не всегда работает так, как от него ожидают, поэтому не стоит предоставлять ему возможность сглючить ещё и в этом месте. Впрочем, если ваши эксперименты покажут, что flask работает нормально, то можете снять чекбокс Same as input, и попросить flask что бы он менял samping rate в готовом фильме на требуюемую.



Следующая закладка называется



Post Processing


.



Первой опцией, доступной здесь, является Resizing Quality Options, она определяет какой алгоритм будет использоваться для изменения размера картинки с оригинального, до того, что вы задали на закладке Video. Посоветовать, какой из них использовать достаточно сложно, каждый должен решить этот вопрос сам для себя, опытным путём. Лично я всегда использую HQ Bicubic Filtering.

Следующий раздел,

Letterbox, Cropping and Aspect Options


. В этом разделе вы можете обрезать "лишние" части изображения. Обычно это чёрные полосы сверху и снизу, которые обрезаются для того, что бы не тратить на них битрейт понапрасну.

Настройки этих режимов достаточно очевидны, стоит только нажать на кнопку Show output pad.

Crop. Уствновив флажок в этом чекбоксе Вам становятся доступны следующие операци.

Top offset – сдвиг изображения вверх (+) или вниз (-). Используется когда обрезана или затенена часть кадра.

Height – обрезает изображение по высоте, (+) отрезать, (-) добавить.

Left offset – сдвиг изображения влево (+) или вправо (-). Используется когда обрезана или затенена часть кадра.

Width – обрезает изображение по ширине, (+) отрезать, (-) добавить.

Letterbox. Установив флажок в этом чекбоксе Вам становятся доступны функции затенения части изображения.

Top – добавляет (+) или убирает (-) чёрную полосу затеняющую изображение сверху.

Botton – добавляет (+) или убирает (-) чёрную полосу затеняющую изображение снизу.

Left – добавляет (+) или убирает (-) чёрную полосу затеняющую изображение слева.

Right – добавляет (+) или убирает (-) чёрную полосу затеняющую изображение справа.

Осталось только посоветовать не пытаться отрезать чёрные полосы полностью. И, как обычно, не сильно удивляйтесь, что эти опции не будут толком работать :-)

Следующая закладка,

Files


.



На этой закладке можно выбрать куда следует записывать конечный фильм, и имя файла, а так же куда под каким именем следует записывать аудиопоток если, конечно, вы выбрали опцию записи аудиопотока в отдельный файл (Direct stream copy).



Изменения доступные здесь на столько очевидны, что вряд ли нуждаются в дополнительных комментариях.

Последней доступной закладкой является закладка

General


.



На этой закладке можно ограничить размер компилируемого файла по секундам или по кадрам, и если хотите закодить целый фильм, то нет никаких причин снимать галочку с чекбокса Compile whole file, стоящую по умолчанию. Чисто теоретически, flask может не закодить фильм до конца, даже если отмеченно Complie whole file, и тогда может помочь выставление количества кадров которые необходимо закодить вручную, но я с такой необходимостью ещё ни разу не сталкивался.

Следующим доступным для модификации пунктом является

Search size


, увеличение которого, по утверждению авторов программы, должно помочь, если возникают проблемы с пропавшими аудио или видео дорожками в полученном файле. Но если воспользоваться моими рекомендациями, и кодировать видео и звук отдельно, в отдельные файлы, то вряд ли вы испытаете такие проблемы. Если мой совет по какой то причине не подходит, то оптимальное значение этого параметра придётся подбирать самостоятельно, эксперементальным путём. Попробуйте начать с 7500.

Последний пункт позволяет указать компьютеру необходимость вылючиться после того как работа flask будет завершенна. Само собой, эта функция корректно работает только на машинах с ATX form factor'ом.

После того, как сделаны все необходимы настройки, наконец то можно переходить к меню Run. Через это меню можно запустить Player, представляющий из себя примитивный и жутко тормозной DVD плеер, встроенный в flask, который используется только для того, что бы определить место, с которого следует начать кодирование фильма, что используется только в том случае, когда Вы не хотите кодировать весь фильм целиком. Когда ВСЁ выбрано можно, наконец то, выбрать пункт

Start conversion


, и приступить к кодированию самого фильма. В этом месте не будет лишним ещё раз повторить мою рекомендацию, перед тем как кодировать фильм, перезагрузите компьютер, во избежание лишних проблем.



Итак, после запуска конверсии фильма, если всё было настроено правильно, откроется два новых окна. Одно из них будет выглядеть так:



В этом окне указываются основные параметры кодированного фильма. Всё очевидно если вы удосужились ознакомиться с предыдущем текстом статьи и

PC-DVD Faq

. Из доступных к изменению параметров, в этом окне имеется только чекбокс Display output, снятие которого может повысить скорость кодирования фильма (очень незначительно), возможность выставить приоритет, с повышением которого можно уменьшить вероятность того, что flask обрушится в процессе кодирования (не должно быть проблемой на нормальном железе. Хотя, здесь главное не перестараться, потому что возможна ситуация, когда система откажется выполнить какое либо из требование ОС, потому что приоритет flask'a выше, и обрушиться уже не flask, а ОС), и пара кнопок, которые позволят временно остановить процесс кодирования (Pause), и восстановить или отменить его (Cancel/Resume). Внизу этого окна идёт график, который показывает интенсивность видеопотока (только в том случае, если включен чекбокс Display output). Если обнаружите, что ломаный график превратился в прямую линию, несмотря на то, что процесс кодированья идёт, что видно во втором окне, то можете себя "поздравить", это означает что кончилось свободное место на том диске, куда пишется фильм, и всё придётся начинать сначала.

Вторым окном, открывающимся после начала конверсии, является окно показывающее кадры фильма которые кодируются в реальном времени. Больше никакой полезной информации это окно не несёт, и может выглядеть так:



Процесс кодирования фильма занимает весьма много времени, как уже неоднократно говорилось, поэтому наберитесь терпения - придётся подождать часов 10-15. И всё это время лучше не трогать компьютер, а смотреть телевизор, потому как последствия этого для закодированного фильма могут быть самые печальные, в виде многочисленных артефактов кодирования и тому подобных вещей. А в худшем случае, компьютер просто повиснет. Есть только одно исключение из этого правила. SMP машина способна выдерживать такие нагрузки без ущерба для всех задач, которые на ней выполняются - почитать про то что это такое, и почему так происходит можно здесь - "

SMP на домашнем компьютере

" и здесь "

Тестирование SMP систем

" на 3DNews.

Нет ничего идеального, и наряду с несомненными достоинствами, flask обладает и серьёзными недостатками. Главным из которых является то, что по какой то непонятной причине размер *.avi файлов полученных с помощью flask иногда несколько больше, чем они должны быть, и несколько больше тех, что получаются с помощью других кодеров. Ещё одним существенным недостатком flask'а является то, что работает он несколько дольше, чем другие программы. Например mpeg2avi.



Страница 5 - Программа MPEG2AVI




Содержание раздела







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий