
Використання відеокомпресорів для розробки учбових відеокадрів
ЗМІСТ
Вступ 3
Розділ І. ОГЛЯД СТИСКУ ІНФОРМАЦІЇ В MPEG-1, MPEG-2, MPEG-4 5
1.1. Принципи стиску інформації в MPEG-1 5
1.2. Принципи стиску інформації в MPEG-2 11
1.3. "MPEG-4" чи структуризація мультимедії 14
Розділ ІІ. ДОСЛІДЖЕННЯ РОБОТИ ВІДЕОКОМПРЕСОРІВ. 19
2.1. Використання кодека DivX та відеокомпресора ProjectDivX для кодування фільмів 19
2.2. Робота із відеокомпресором FlasK MPEG 25
Висновок 33
Література 34
Вступ
За вісім років у широкої аудиторії встигло скластися представлення про MPEG як про організацію, що цілком присвятила себе питанням стиску медіа-даних – і це одна з причин, чому так вражає при першому знайомстві зміст стандарту MPEG-4. Але якщо розібратися, та навіть сама назва MPEG – «Експертна група по зображенні, що рухається» – показує, що коло її інтересів значно ширше проблем стиску. Просто на першому етапі «мультимедіа-революції» саме стиск мав вирішальне значення, і в MPEG приділили йому найбільше уваги, домігшись, відзначимо, безпрецедентно успішного результату в справі об’єднання підходів і інтересів багатомільярдних корпорацій і цілих індустрій.
Сьогодні відбувається зближення (починається інтеграція) телебачення й Інтернету, персональних комп'ютерів і розважальних приставок і плеєрів, а медіа-контент, що споживач одержує з усіх цих джерел, стає не просто цифровим, але й усе більш інтерактивним. І вимагаються нові стандарти, що допоможуть розроблювачам контента донести свої здобутки до споживача максимальним числом способів, а користувачам (глядачам) – одержувати зі свого пристрою доступ до медіа-контенту в будь-якій його формі.
Тому було вирішено написати курсову роботу по використанню відеокомпресорів для розробки учбових відеокадрів. Метою курсової роботи було дослідити роботу відеокомпресорів при встановленні різних параметрів, які властиві кожному формату MPEG.
Протягом багатьох років здійснювалися розробки групи MPEG, в результаті яких було досягнуто стандарту. Про цей стандарт говорили, як про «занадто складний, щоб бути реалізованим», ремствували на високий рівень апаратної підтримки, що вимагається... Сьогодні вже не тільки MPEG-1, але і MPEG-2 може бути реалізований програмно, на базі цих стандартів вишикувалися цілі індустрії, стандарти MPEG відзначені нагородами Emmy.
Тому, незважаючи на удавану складність MPEG-4, має сенс докладно розібратися з цим стандартом – він з дуже великою ймовірністю визначить розвиток комп'ютерних, віщальних і навіть мобільних систем у найближчі роки. Треба підкреслити, що розбиратися прийдеться не тільки програмістам, для яких відкривається нова цікава ніша (реалізація складної і багатобічної функціональності форматів MPEG для самих різних клієнтських і серверних платформ), але і гуманітарно-творчим людям, авторам і продюсерам віщальних програм. Слідом за інтерактивним контентом на дисках і в мережі Інтернет інтерактивними стають телепрограми – і навички програмування і алгоритмічного мислення дуже придадуться розроблювачам цих нових програм.
Розділ І. ОГЛЯД СТИСКУ ІНФОРМАЦІЇ В MPEG-1, MPEG-2, MPEG-4
1.1. Принципи стиску інформації в MPEG-1
Формат MPEG-1 почав розроблятися в ті важко уявлені часи, коли не було широкодоступних носіїв великого обсягу, у той час, як відеодані, навіть і стиснуті, займали зовсім колосальні для кінця 80-х обсяги - середньої тривалості фільм мав об’єм більший 1 Гб. Це була епоха 286 і 386 процесорів, 4 Мб оперативної пам'яті і 250 Мб вінчестер У таких умовах необхідно було знайти носій, на який можна було б записати 1 Гб інформації, при цьому цей носій повинний був бути недорогим, інакше ні про яку масовість не могло бути і мови. І такий носій був знайдений. Саме в ці роки вперше на платформі PC з'явився такий новий тип носіїв інформації як CD-ROM диски, що змогли забезпечити необхідний обсяг інформації. Правда, на один диск фільм у форматі MPEG-1 усе-таки не вміщався, але що заважало записати його на 2 CD, тим більше, що новинка коштувала не дуже дорого? Зрозуміло, перші CD-ROM програвачі були одношвидкісними, тому не варто дивуватися, що максимальна швидкість пересилання потоку даних (bitstream) у форматі MPEG-1 обмежена 150 Кб/сек., що відповідає одній швидкості CD-ROM. Треба сказати, що можливості MPEG-1 не обмежені тим низьким дозволом, що ви усі бачили при перегляді VIDEO-CD. У самому форматі була закладена можливість стиску і відтворення відеоінформації з дозволом аж до 4095х4095 і частотою зміни кадрів до 60 Гц. Але через те, що потік передачі даних був обмежений 150 Кб/сек., тобто так називаний Constrained Parameters Bitstream (CPB) - зафіксована ширина потоку передачі даних, розроблювачі формату, а надалі і творці кодеків на його основі, були змушені використовувати роздільну здатність кадру, оптимізовані під даний CPB. Найбільше широко розповсюдженими є два таких оптимізованих формати - це формат SIF 352х240, 30 кадрів у секунду й урізаний формат PAL/SECAM 352х288, 25 кадрів у секунду. Ну от, з роздільна здатністьм визначилися, тепер можна і подивитися, як це все стискується.
Як приклад розглянемо урізаний формат PAL/SECAM, що більш розповсюджений, чим SIF, хоча обоє ці формату за винятком дозволу і частоти зміни кадрів нічим друг від друга не відрізняються. Урізана версія формату PAL/SECAM містить 352 ppl (point per line - крапок на лінію), 288 lpf (line per frame - ліній на кадр) і 25 fps (frame per second - кадрів у секунду). Треба сказати, що повноцінний стандарт PAL/SECAM має параметри в 4 рази більші, ніж аналогічні в MPEG-1 (крім fps). Тому прийнято говорити, що VIDEO-CD має чіткість у чотири рази гірше, у порівнянні зі звичайним відео. Що стосується глибини кольору, те отут не все так просто, як у комп'ютерній графіці, де на кожен піксель виділяється визначене фіксоване число біт. MPEG-1 використовує колірну схему YСbСr, де Y - це яскрава площина, Сb і Cr – колірні площини. Ці площини кодуються з різною роздільною здатністю. Існують кілька варіантів кодування, які можна представити з наступному виді:
Варіант кодування Відношення роздільної здатністі Сb/Y (Сr/Y ) по горизонталі Відношення роздільної здатністі Сb/Y (Сr/Y ) по вертикалі
4:4:4 1:1 1:1
4:2:2 1:2 1:1
4:2:0 1:2 1:2
4:1:1 1:4 1:1
4:1:0 1:4 1:4
Як видно з таблиці Сb і Cr практично завжди кодуються з меншим дозволом, чим Y. Чим менше роздільна здатність колірних площин, тим гірша і несправжня передача кольору у відеоролику. Зрозуміло, самим неякісним, але і самим компактним буде останній варіант. Перед початком кодування відбувається аналіз відеоінформації, вибираються ключові кадри, що не будуть змінюватися при стиску, а так само кадри, при кодуванні яких частина інформації буде віддалятися. Усього виділяється три типи кадрів:
Кадри типу І - Intra frame. Ключові кадри, що стискуються без змін.
Кадри типу P - Predirected frame. При кодуванні цих кадрів частина інформації віддаляється. При відтворенні P кадру використовується інформація від попередніх I чи P кадрів.
Кадри типу В - Bidirectional frame. При кодуванні цих кадрів втрати інформації ще більш значні. При відтворенні В кадру використовується інформація уже від двох попередніх I чи P кадрів. Наявність В кадрів у відеоролику – той самий фактор, завдяки якому MPEG-1 має високий коефіцієнт стиску (але і не дуже високу якість). При кодуванні формується ланцюжок кадрів різних типів. Найбільш типова послідовність може виглядати в такий спосіб: IBBPBBPBBIBBPBBPBB... Відповідно черга відтворення по номерах кадрів буде виглядати так: 1423765... По закінченні розбивки кадрів на різні типи починається процес підготовки до кодування. З I кадрами процес підготовки до кодування відбувається досить просто – кадр розбивається на блоки. У MPEG-1 блоки мають розмір 8х8 пікселів. А от для кадрів типу P і B підготовка відбувається набагато складніше. Для того, щоб сильніше зжати кадри зазначених типів використовується алгоритм пророкування руху. Як вхідну інформацію алгоритм пророкування руху одержує блок 8х8 пикселов поточного кадру й аналогічні блоки від попередніх кадрів (I чи P типу). На виході даного алгоритму маємо наступну інформацію про вищевказаний блок: Вектор руху поточного блоку відносно попередніх має різницю між поточним і попередніми блоками, що власне і буде піддаватися подальшому кодуванню. Уся надлишкова інформація підлягає видаленню, завдяки чому і досягається настільки високий коефіцієнт стиску, неможливий при стиску без утрат. Але в алгоритму пророкування руху є обмеження. Найчастіше у фільмах бувають статичні сцени, у яких руху немає чи він незначний і виникають блоки чи цілі кадри, у яких неможливо використовувати алгоритм пророкування руху.
У відеороликів стиснутих MPEG-1 якість сцен з невеликою кількістю об'єктів, що рухаються, помітно вище, ніж у сценах з інтенсивним рухом. Це пояснюється тим, що в статичних сценах P і B кадри, по суті, являють собою копії I кадрів, утрат практично немає, але і стиск інформації незначний. У випадку ж коректного спрацьовування алгоритму пророкування руху, обсяги кадрів різного типу в байтах співвідносяться один з одним приблизно в такий спосіб – I:P:B як 15:5:2. Як ви бачите з даного співвідношення, зменшення обсягу відеоінформації в наявності вже на стадії підготовки до кодування. По закінченні цієї стадії починається власне саме кодування.
Процес кодування містить у собі 3 стадії:
Discrete Cosine Transformation - DTC, дискретне перетворення косинусів, перетворення Фур'є.
Quantization - квантування. Переклад даних з безупинної форми в переривчасту, дискретну. Перетворення отриманих блоків даних у послідовність, тобто перетворення з матричної форми в лінійну. При кодуванні блоки пікселів чи обчислена різниця між блоками обробляється першим з перетворюючим алгоритмів – DTC (дискретне перетворення косинусів). Звичайно пікселі в блоці і самі блоки зображення якимсь образом зв'язані між собою - наприклад однотонний фон, рівномірний градієнт висвітлення, що повторюється візерунок і т.д. Такий зв'язок називається кореляцією. Алгоритм DTC, використовуючи ефекти, що корелюють, робить перетворення блоків у частотні фур'є-компоненти. При цьому частина інформації губиться за рахунок вирівнювання ділянок, що сильно виділяються, що не підкоряються кореляції. Після цієї процедури в дію вступає алгоритм Quantization - квантування, що формує Quantization matrix.
Quantization matrix - це матриця квантування, елементами якої є перетворені з безупинної в дискретну форму дані, тобто числа, що являють собою значення амплітуди частотних фур'є-компонентів. Після формування quantization matrix відбувається розбивка частотних коефіцієнтів на конкретне число значень. Точність частотних коефіцієнтів фіксована і складає 8 біт. Після квантування багато коефіцієнтів у матриці обнуляються.
В завершальній стадії відбувається перетворення матриці в лінійну форму. Усі ці перетворення стосуються тільки зображення. Але крім зображення в практично будь-якому відеофрагменті присутній так само і звук. Кодування звуку здійснюється окремим звуковим кодером. В міру розвитку формату MPEG, звукові кодери неодноразово перероблялися, стаючи усе ефективніше. До моменту остаточної стандартизації формату MPEG-1 було створено три звукових кодера цього сімейства - MPEG-1 Layer I, Layer II і Layer 3 (той самий знаменитий MP3). Принципи кодування всіх цих кодеків засновані на психоакустичній моделі, що ставала усе більш і більш зроблена і досягла свого апофеозу для сімейства MPEG-1 в алгоритмах Layer-3. Про психоакустичну модель і принципи стиску аудіоданих із утратами написана безліч статей, тому опис аудіокодерів можна опустити, згадавши, єдино про синхронізацію аудіо і відеоданих і форматів аудіотреків. Синхронізація аудіо- і відеоданих здійснюється за допомогою спеціально виділеного потоку даних за назвою System stream. Цей потік містить убудований таймер, що працює зі швидкістю 90 Кгц і містить 2 шари – системний шар з таймером і службовою інформацією для синхронізації кадрів з аудіотреком і компресійний шар з відео- і аудіопотоками.
Під службовою інформацією розуміються кілька видів міток, найбільш важливими з яких є мітки SCR (System Clock Reference) – інкремент збільшення тимчасового лічильника кодека і PDS (Presentation Data Stamp) - мітка початку відтворення відеокадру чи аудіофрейма. Ще потрібно назвати деякі параметри аудіотреків, що використовуються в цьому форматі. Якість аудіотреків у MPEG-1 може варіюватися в дуже великих межах – від високоякісних до потворних. Остаточно усі формати стиску аудіоданих були стандартизовані в 1992 році європейською комісією зі стандартів ISO.У залежності від використовуваного кодера і ступеня стиску аудіоінформація відеоролика може бути представлена в наступному виді: моно, dual mono, стерео, інтенсивне стерео (стереосигнали, чиї частоти перевищують 2 кГц поєднуються в моно), m/s стерео (один канал - сума сигналів, іншої - різниця) і по частоті дискретизації можуть бути: 48, 44.1і 32 кГц.
1.2. Принципи стиску інформації в MPEG-2
Розробки стандарту MPEG-2 почалися в 1990р. Він розроблений спеціально для кодування ТВ сигналів віщального телебачення, а також дозволяє одержати високу чіткість ТВ зображення, яка відповідає Рекомендації 601 МККР: 576 активних рядків у кадрі і 720 підрахунків в активній частині рядка. Стандарт призначений для каналів зв'язку, що забезпечують швидкість передачі даних 3-10 Мбіт/с для звичайного телевізійного стандарту і 15-30 Мбіт/с для телебачення високої чіткості (ТВЧ). Проект стандарту MPEG-2 вийшов на початку 1994р., а в 1995р. були випущені останні документи. У стандарті забезпечується сумісність "уперед", тобто MPEG-2 декодер може декодувати потік даних формату MPEG-1.
Стандарт MPEG-2 складається з трьох основних частин: системної, відео та звукової. Системна частина описує формати кодування для мультиплікації звукової, відео- та іншої інформації, розглядає питання комбінування одного або більше потоків даних в один або безліч потоків, придатних для збереження чи передачі.
Системний рівень виконує п'ять основних функції:
Синхронізація декількох стиснутих потоків при відтворенні;
Об'єднання декількох стиснутих потоків в єдиний потік;
Ініціалізація для початку відтворення;
Обслуговування буфера;
Визначення тимчасової шкали.
Відео частина стандарту описує кодований бітовий потік для високоякісного цифрового відео. MPEG-2 є сумісним розширенням MPEG-1, він підтримує міжстроковий відеоформат і містить засобу для підтримки ТВЧ.
Звукова частина стандарту MPEG-2 визначає кодування багатоканального звуку. MPEG-2 підтримує до п'яти повних широкосмужних каналів плюс додатковий низькочастотний канал і(або) до семи багатомовних коментаторських каналів. Він також розширює можливості кодування моно- і стереозвукових сигналів у MPEG-1 за рахунок використання половинних частот дискретизації (16;22,05 і 24 кГц) для поліпшення якості при швидкостях передачі 64 Кбіт/с і нижче.
Застосування стандарту MPEG-2 у віщальному телебаченні дозволяє значно знизити швидкість передачі відео- і звукових даних і за рахунок цього передавати трохи цифрових програм у стандартній смузі частот радіоканалів ефірного, кабельного і супутникового телебачення. Наприклад, великі переваги MPEG-2 дає в системах супутникового телевізійного віщання. Стиск дозволяє передати по одному стандартному каналі від одного до п'яти цифрових каналів при професійному рівні якості відеосигналу. Важливо і те, що цифрові канали в порівнянні з аналоговими надають більш широкі можливості для передачі додаткової інформації.
Пропускна здатність стандартного супутникового каналу при смузі 32 МГц складає 55 Мбіт/с. Для віщання з професійною якістю потрібна швидкість цифрового потоку 5-8 Мбіт/c. Таким чином, один стандартний супутниковий канал дозволяє транслювати 4-5 телевізійних програм. Можливе використання цифрових каналів з більш високими коефіцієнтами стиску. При цьому в одному стандартному каналі передається до десяти відеопрограм. Однак, у цих випадках помітна втрата якості зображення.
Сумісність стандартів MPEG-1 і MPEG-2
MPEG-2 сумісний з попереднім стандартом MPEG-1 "уперед" і "нагору" по відеопотоці. Взагалі говорячи, при переході до нового стандарту можливі наступні види сумісності:
Сумісність "уперед" – декодер нового покоління повинний уміти декодувати потоки декодера попереднього покоління ;
Сумісність "назад" – декодер попереднього покоління повинний уміти декодувати потоки чи частину потоку кодера нового покоління ;
Сумісність "нагору" – декодер нового покоління з більш високим дозволом повинний уміти декодувати потоки попереднього покоління з низьким дозволом;
Сумісність "униз" – декодер попереднього покоління з низьким дозволом повинний уміти декодувати потоки нового покоління з більш високим дозволом
Сумісність кодерів попереднього (MPEG-1) і наступного (MPEG-2) поколінь досягається за рахунок уведення синтаксису розширень заголовків. Декодер попереднього покоління ігнорує додаткову інформацію, яка знаходиться в розширеннях заголовків, зарезервованих у попереднім поколінні стандарту, і здатний відновлювати дані, що містяться в бітовому потоці. У такий спосіб можна забезпечити сумісність "уперед" і "нагору". Сумісність "назад" і "униз" може бути гарантована лише додатковим апаратним забезпеченням декодера попереднього покоління.
Стиск відеосигналу
Стандарт MPEG-2 не регламентує методи стиску відеосигналу, а тільки визначає, як повинний виглядати бітовий потік кодованого відеосигналу, тому конкретні алгоритми є комерційною таємницею фірм – виробників устаткування. Однак існують загальні принципи, і процес стиску цифрового відеосигналу може бути розбитий на ряд послідовних операцій: перетворення аналогового сигналу в цифрову форму, попередня обробка, дискретне косинусне перетворення, квантування, кодування.
Можна відзначити, що якість кодування і декодування відеосигналів по стандарті MPEG-2 визначається не тільки можливостями апаратних засобів, але і рівнем пророблення спеціалізованого програмного забезпечення.
1.3. "MPEG-4" чи структуризація мультимедії
Група MPEG розпочала роботу над стандартом MPEG-3, який повинний був забезпечити уніфікацію в компресії потоків даних зі швидкостями 20-40 Мбіт/с для телебачення високої чіткості (HDTV), але досить швидко виявилося, що принципової різниці в підходах між MPEG-2 і MPEG-3 ні, у результаті чого розробка останнього була припинена, а рамки MPEG-2 розширені. Важливість цього стандарту важко переоцінити, вона набагато більше, ніж простий опис правил кодування. Власне кажучи він претендує на те, щоб стати – через десять років після зародження цифрового мультимедіа – єдиним концептуальним способом опису, представлення й обробки мультимедіа-даних на найближче десятиліття.
Нове призначення стандарту MPEG-4 у робочих документах групи MPEG формулюється так: він задає принципи роботи з контентом (цифровим представленням медіа-даних) для трьох областей: і власне інтерактивного мультимедіа (включаючи продукти, розповсюджувані на оптичних дисках і через мережу), графічних додатків (синтетичного контента) і цифрового телебачення – DTV. При цьому його головне достоїнство, полягає в тому, що він не просто оформляє ту чи іншу сформовану практику як стандарт, але, подібно американської конституції, є випереджальним, структуроутворюючим і фундаментальним законом, що створює основу для виробництва, поширення контенту і способів доступу до нього в новому єдиному цифровому середовищі і відкриваючим – у випадку його визнання перерахованими галузями – безлічі принципово нових можливостей для авторів, дистриб’юторів і споживачів цього контенту.
MPEG-4 – не тільки стандарт, фактично він задає правила організації середовища, причому середовища об’єктно-орієнтованого. Він має справу не просто з потоками і масивами медіа-даних, а з медіа-об’єктами – це ключове поняття стандарту. Об'єкти можуть бути аудіо-, відео-, аудіовізуальними, графічними (плоскими і тривимірними), текстовими. Вони можуть бути як «природними» (записаними, знятими, сканованими і т.п.), так і синтетичними (тобто штучно сформованими). Прикладами об'єктів можуть служити нерухомий фон, відеоперсонажі окремо від фону (на прозорому фоні), синтезована на основі тексту мова, музичні фрагменти, тривимірна модель, яку можна рухати й обертати в кадрі. Медіа-об’єкти можуть бути потоковими. Кожен медіа-об’єкт має зв'язаний з ним набір дескрипторів, де і задаються всі його властивості, операції, необхідні для декодування асоційованих з ним потокового даних, розміщення в сцені, а також поводження і припустимі реакції на впливи користувача. З об'єктів будуються сцени. Сцена має свою систему координат, відповідно до якої розміщаються об'єкти. Звукові об'єкти також можуть мати (і змінювати в часі) координати в просторі сцени, завдяки чому досягаються стерео- і «навколишні» (surround) ефекти. Об'єкти можуть бути елементарними (primitive) і складеними (compound), тобто такими, що представляють ту чи іншу композицію елементарних об'єктів (наприклад, штучно створений тривимірний телевізор, накладена на його екран жива відеотрансляція і вихідний з його динаміків звук).
Стандарт задає правила кодування різних об'єктів, їхньої ієрархії і способи композиції при побудові сцени, а також методи взаємодії користувача з окремими об'єктами усередині сцени. Кожен об'єкт має свою локальну систему координат – з її допомогою об'єкт керується в просторі і в часі. При поміщенні об'єкта в сцену відбувається перетворення його локальної системи координат у систему координат старшого по ієрархії об'єкта чи глобальну систему координат сцени. Об'єкти і сцена можуть мати поводження, контрольованим рівнем композиції при візуалізації сцени (характер звуку, колір об'єкта і т.п.). Сцена описується за допомогою ієрархічної структури; вузлами цієї структури є об'єкти, і вона динамічно перебудовується в міру того, як вузли-об'єкти додаються, чи віддаляються заміняються.
У MPEG-4 визначений двоїною мовою опису об'єктів, класів об'єктів і сцен BIFS, що характеризують як «розширення Си++». За допомогою команд BIFS можна анімувати об'єкти, змінювати їхньої координати, розміри, властивості, задавати поводження, реакції на впливи користувача, змінювати властивості середовища, змінювати й обновляти сцену, виконувати 2D-геометричні побудови і т.п. Оскільки мова складається із двох, він дуже компактний і швидкий в інтерпретації. Відповідно до заяв розроблювачів, багато концепцій BIFS запозичені в VRML, і зараз MPEG і Web 3D Consortium продовжують роботу зі зближення MPEG-4 і VRML.
Кодування відео
Як уже згадувалося, MPEG-4 починав розроблятися як спосіб передачі потокових медіа-даних, у першу чергу відео, по каналах з низькою пропускною здатністю (4,8-64 Кбіт/с), у тому числі без провідним. Зараз ця частина представлена блоком VLBV Core (Very Low Bit-rate Video) – ядром, що забезпечує роботу з «відео, що має дуже низьку швидкість потоку даних». Природно, таке відео має погіршені характеристики як з дозволу (до так називаного дозволу CIF, Common Interchange Format – 320Ч240), так і по частоті кадрів (до 15 кадр/с); утім, прогрес методів стиску постійно підвищує «верхню границю» характеристик – всього два роки тому мова йшла лише про 176Ч144... Крім ефективних і перешкодостійких методів кодування послідовностей подібних кадрів, VLBV містить пропозиції по реалізації операцій довільного доступу до кадрів відеопослідовності, а також швидкої «підмотування» відеоряду вперед та назад. Це потрібно, наприклад, у бурхливо розвивається області керування медіа-активами (Digital Asset Management) – для роботи з базами відеоданих, що зберігають відеоматеріали в низькому розрішенні (для цілей швидкого пошуку й оцінки) та посилання на місця збереження відповідних матеріалів у повній віщальній якості.
Другий блок, відповідальний за роботу з відео з великою швидкістю потоку, аж до віщальної якості по стандарті ITU-R 601, забезпечує в загальному те ж функції, що і VLBV, однак тут передбачені можливості роботи з відео, що має не тільки прогресивну, але і міжрядкове телевізійне розгорнення. Два названих блоки обробляють звичайні відеопотоки з прямокутними кадрами і фактично містять у собі функціональність MPEG-1 і MPEG-2, а також кодування «живих» текстур.
Особливо цікавий третій блок – так названі функції, що залежать від контенту.
Сюди входить обробка відео з довільним силуетом (за допомогою 8-бітового механізму чи прозорості двойних масок) для окремого кодування відеооб'єктів (наприклад, «вирізаного» силуету диктора) і інтерактивних маніпуляцій з ними. Крім звичайних методів міжкадрового кодування – пророкування і компенсації руху, передбачені механізми роботи з «спрайтами» – нерухомими зображеннями, що передаються в декодер лише один раз і всякий раз підставляються в потрібне місце кадру зі спеціального спрайтового буфера. Механізм спрайтів дозволяє значно знизити обсяг переданих даних і забезпечує велику гнучкість у побудові сцен. Наприклад, можна запускати різні об’єкти-спрайтів (літаки, автомобілі) поверх «живого» відеофону або ж побудувати (виділити з реальних зйомок чи згенерувати) нерухому спрайт-панораму шириною в кілька кадрів для заднього плану сцени (спортивна площадка і трибуни) і, запустивши поверх її «живі» відео об’єкти (гравців), панорамувати камерою вправо в уліво – у цьому випадку для кожного кадру досить передавати замість повної картинки фону тільки параметри камери – напрямок і наплив (zoom). Для поліпшення часу реакції спрайт-панорами можуть підкачуватися з «прогресивним дозволом», тобто з поступовим поліпшенням дозволу, як картинки в Інтернеті.
Цей же блок відповідає за «маштабування» відеооб'єктів. Під цим терміном мається на увазі, що об'єкти кодуються таким чином, щоб декодер мав можливість у випадку обмежень пропускної здатності мережі чи параметрів самого декодера (недостатня обчислювальна потужність, мала роздільна здатність дисплея) обріжуть зображення, декодуючи і виводячи лише частину переданої потокової інформації (наприклад, зменшуючи частоту чи роздільну здатність кадрів, збільшуючи «зернистість»), але зберігаючи проте адекватність передачі контенту. Для відеопотоків передбачено до трьох рівнів зернистості. При кодуванні нерухомих зображень і текстур у MPEG-4 застосовується дуже ефективний wavelet-алгоритм, що забезпечує кодування об'єктів довільної форми, 11 рівнів масштабності по роздільній здатності і плавну масштабність по якості картинки. Результуючий закодований потік являє собою «піраміду» різних дозволів, і в приймачі картинка згодом «проявляється», поліпшуючи настільки, наскільки дозволяє дане передавальне середовище.
Розділ ІІ. ДОСЛІДЖЕННЯ РОБОТИ ВІДЕОКОМПРЕСОРІВ.
2.1. Використання кодека DivX та відеокомпресора ProjectDivX для кодування фільмів
В наш час, коли з’явилися потужні комп’ютери і можливість їх придбати, з’явилася можливість переглядати улюблений фільм по 5-6 разів на день і насолоджуватися сюжетом. Але не тільки сюжетом, а й головними героями. Тому будь-який фільм повинен мати хорошу якість, займати не дуже велику кількість пам’яті на вінчестеру. Проте не у всіх є можливість переглянути, наприклад, фільм у форматі MPEG-4, але є можливість подивитися фільми у форматі MPEG-1, MPEG-2, яким потрібні менші вимоги.
Сьогодні багато фільмів записано у DVD форматі та MPEG-4, які мають дуже хорошу якість, але мають великий об’єм. Наприклад, нам потрібно перекодувати із MPEG-2 в MPEG-4, утративши якнайменше якості. Але будь-яке перекодування, фільтри й інші зміни неминуче ведуть до погіршення реальної якості фільму, незважаючи на удавану іноді ідентичність і навіть, як деяким здається, поліпшення картинки.
Потрібно погодитись, що ми не одержимо від DivX фільму якості, цілком ідентичної DVD при меншому (інший раз на порядок – 8 Гб у 0,7 Гб) об’ємі файлу.
Насправді (звичайно) DVD пишуть не круглі ідіоти, і якість диска гарантується іноді людино-роками роботи. Накладаючи фільтри ми збільшуємо контрастність, утрачаючи півтони; змінюємо яскравість, утрачаючи динаміку кольору; нормалізуємо аудіо до 120-140%, одержуючи перевантаження і перекручування під час голосних звуків; убиваємо відео шуми, розмиваючи картинку; змінюємо кольоровість, різкість, рівень і інше – ми завжди щось утрачаємо, у порівнянні з оригіналом. А некраще було б підстроїти монітор чи настроїти програвач, чим псувати оригінальний фільм. Ми і так його псуємо, зменшуючи розмір кадру.
То як же нам перекодувати MPEG-2, що знаходиться на DVD-диску в наш МПЕГ-4, що являє собою DivX, утративши якнайменше якості?
Візьмемо для цього деякий відеоролик і MPEG-2 перекодуємо в MPEG-4. Запускаємо відеокомпресор ProjectDivX, після цього нам треба визначитися з вибором розміру кадру, варіантом кодека і бітрейтом. Для цього нам потрібно натиснути кнопку Full creation і вказати: 1) шлях, де розміщений нам потрібний відео ролик; 2) куди будуть зберігатися перекодовані відеоролики Low Motion та Fast Motion; 3) потрібно встановити потрібний нам кодек та вказати параметри кодування; 4) вказуємо куди зберегти файл *.dat; 5) розпочинаємо перекодування відеоролика.
Бітрейт. Має визначальне значення для маси кінцевого файлу. Знаючи довжину фільму в хвилинах (секундах) і граничну кількість місця, куди ми збираємося помістити перекодований фільм, можна обчислити (з деякою помилкою) потрібний нам бітрейт. Це можна зробити як вручну, так і за допомогою програм – бітрейт-калькулятора. Для цього служать Advanced Bitrate Calculator (by Mick Thunder) і DVTool (by Cnife).
Приклад розрахунку бітрейту. Скажемо в нас є відеоролик 1хв 30с, ми хочемо закодувати його в файл з меншим об’ємом. Повна довжина відеоролика складає 1*60+30=92 сек. Знаючи якого об’єму файла нам потрібно досягнути ми розраховуємо бітрейт. Наприклад, даний файл займає 75,2 Мб, а нам потрібно, щоб він займав близько 15 Мб. Тоді 15000 кб / 90 сек = 166 кб/сек чи 166 * 8 = 1333 кбіт/сек. Приблизно з таким бітрейтом ми можемо зжати цей відеоролик кодеком Low Motion (віднявши від нього ще бітрейт звуку). Краще звичайно ж задати трішки менший (скажімо 1200 кбіт/сек), щоб не помилитися, адже ролик не влізе на диск.
Вибір варіанту кодека. Після цього нам потрібно вибрати кодек DivХ. Два попередніх абзаци стосуються тільки кодека Div Low Motion (LM). У нього заданий у кодеку бітрейт визначає середній бітрейт фільму. Хоча якщо ми задамо дуже маленький кадр чи у ньому будуть суцільні чорні поля, то реальний бітрейт виявиться менший заданого. У Fast Motion (FM) кодека задається верхнє значення бітрейта, тобто межа, вище якого він не може заходити, а от нижче... Нижче він не тільки може, але і буде кодувати. І дуже сильно. Він може при заданому бітрейті 3000 кбіт/сек перекодувати фільм у 900 кбіт/сек. Це значить, що всі більш-менш рівномірні заливання перетворяться в дитячий набір кубиків, розкиданий по вашому кадрі. Це можуть бути обличчя великим планом чи рівномірна заливка, газон на футбольному полі і т.д. Зате швидкі сцени практично не будуть мати паразитних слідів, властивих LM. Крім того, заощаджуючи на рівномірних заливаннях, FM не пошкодує бітрейта для швидких чи насичених деталями сцен – там реальний бітрейт буде якраз ті самі 3000 кбіт/сек, а значить кадр буде більш якісно виглядати. При кодуванні відеоролика FM кодеком ми встановлюємо бітрейт рівний
От ми і підійшли до парадокса кодека DivХ. Перекодування за допомогою LM на низьких бітрейтах (900-1200) дозволить мати більш рівні заливання, але при різкому зрушенні камери дасть нам паразитні шуми. А кодування за допомогою FM на високих бітрейтах (2400/3000/6000) дасть нам якісну картинку при насиченої деталями сцені, але запоганить усі рівномірні заливання. А парадокс у тім, що обоє результуючих файлу (LM з низьким бітрейтом і FM з високим) можуть виявитися однакової довжини! Причому якщо довжину LM-файлу ми вже навчилися вираховувати, то довжину FM-файлу вирахувати можна тільки дуже приблизно – він може виїхати в ту чи іншу сторону дуже пристойно! Скажімо при заданому потоці 1800 кінцевий потік при FM може виявитися як 600, так і 2500 кбіт/сек.
Для цього нам потрібно знати, яких сцен більше у фільмі (а ще простіше це зробити з кліпом – він менший за часом), і вибрати відповідний кодек. Ну а якщо хочеться одержати найбільш якісний результат (і місце це дозволяє), то прийдеться застосувати спосіб подвійного кодування. Коротенько – фільм кодується двічі, з LM на низькому бітрейті (900, 1200, або 1800) і з FM на високому бітрейті (2400, 3000, або 6000), а потім поєднується в один AVI файл з перемінним бітрейтом або вручну, на око вибираючи найбільш придатний кодек для конкретної сцени, або автоматично, довіривши цю серйозну справу програмі, такій як – Project Div чи Make Film TNG.
Бітрейт для FM, який ми використовували при дослідженні рівний 2000 кбіт/сек. Можна сказати, що відеоролик містив в собі бистрі сцени і тому краще застосувати FM кодек. Тому після кодування ми отримаємо краще зображення після кодування цим кодеком.
Кінцевий результат файлу, який ми отримали, 13 Мб, майже такий як нам потрібний. І файли кодування кодеком FM та LM були майже однакові, проте зображення, яке ми отримали при кодування кодеком LM було трохи гірше ніж при кодування кодеком FM. Адже у відеоролику було більше бистрих сцен.
Розмір кадру чи роздільна здатність фільму. Це третя складова якості фільму поряд з потоком даних (Data Rate) і варіантом кодека (LM або FM). Звичайний кадр фільму у форматі DVD (MPEG-2) 720х576 (варіанти 640х480 або 768х576). Кадр оригінального об’єму DVD дасть нам найвищу якість фільму (чіткість деталей), особливо при кодуванні на високих бітрейтах (LM 6000), але тоді фільм не ввійде на один і навіть на два компакт диски (КД), мало того, його об’єм буде наближатися до об’єму фільму на DVD (близько 2 – 4 Гб). Якщо ми хочемо умістити весь фільм на один-два диски, приходиться жертвувати зменшенням потоку даних, а значить перекручуванням картинки в кадрі. Чим сильніший стиск (менший потік), тим сильніше перекручування повного кадру. Але якщо ми поставимо розмір кадру скажемо 40х30 крапок, то перекручувань майже не буде). Проте і ми майже нічого не побачимо, навіть збільшивши такий кадр на весь екран – середні, не говорячи вже про дрібний, деталі будуть цілком розмиті, і не тільки зменшенням картинки, але і самим кодеком, для якого усі поля кадру перетвориться в практично рівномірний, а значить добре стиснутий фон. Значить потрібно знайти баланс між розміром кадру, щоб ще щось розбирати на екрані і потоком, при якому наш кадр не спливе весь на квадратики.
Крім проблеми квадратиків по полю кадру є ще проблема виводу фільму на телевізор (ТВ) через відеовихід відеокарти (звичайно якщо він є). Справа в тім, що багато драйверів відеовиходів мають особливість виводити відеопотік, тільки якщо розміри ширини і довжини кадру поділяються на 32. Крім того, пропорції ТВ екрана мають співвідношення 4:3, значить для того, щоб дивитися фільм у повно екранному розрішенні ТВ, треба мати фільм зі сторонами в пропорції 4:3. Це обмежує розміри, з якими ми можемо цифрувати фільм співвідношення 4:3 всього декількома: 768*576 (повний кадр PAL і SECAM), 704*528, 640*480 (повний кадр NTSC), 576*432, 512*384, 448*336, 384*288 (напівкадр PAL і SECAM), 320*240 (напівкадр NTSC), 256*192, 192*144, 128*96, 64*48. Зрозуміло, що з останніми чотирма дозволами фільм буде виглядати досить погано, навіть якщо його цифрували з DVD. Дозволу 384*288 і 320*240 варто застосовувати тільки в тих випадках, якщо нам не потрібні дрібні деталі, або якщо фільму на DVD дуже поганої якості (бувають і такі) і не дасть більш чіткої деталізації при більш високому розширенні. Широкоформатні фільми співвідношення 16:9, а таких зараз дуже багато в зв'язку з розповсюдженими широкоформатними ТВ (хоча кліпів такого співвідношення поки що саме таких дуже мало), мають ще більш обмежену кількість цифрової роздільної здатності, придатної для виводу на ТВ – 768*432, 512*288, 256*144. Хоча для фільмів 16:9 можна установити шторки, приводячи їх у відповідність 4:3, або вони бувають записані відразу в такій відповідності зі шторками і досить тільки їх не обрізати.
Список застосовуваної роздільної здатності
4:3 стандарт 768x 576 720x 540 704x 528 640x 480 576x 432 512x 384 448x 336 384x 288 320x 240
4:3 не пропорційні 720x 576 704x 576 720x 480
16:9 768x 432 720x 432 640x 360 576x 324 512x 288 448x 252 384x 216 320x 180 320x 180
Крім обмежень розмірів кадру знизу по чіткості деталей ми маємо обмеження зверху по можливостях сучасних комп'ютерів. Скажемо відновлення проміжного кадру 384*288 жадає від комп'ютера прорахунку 110592 крапок, а відновлення кадру 768*576 уже 442368 крапок, тобто в 4 рази більше. Середній комп’ютер (P-II/III/Cel 500 з картою типу Riva TNT/TNT2/Vanta/M64) може програвати без проблем фільм з кадром 576*432 у 32-бітному режимі. Але так названу якість драйвера (CPU Quality) прийдеться поставити на 0, або перейти в 16-бітний режим. З фільмом 640*480 і тим більше 768*576 уже виникнуть проблеми в програванні – фільм буде сильно смикатися, особливо при великих потоках (це додатково завантажує процесор). Отже ми на даний момент обмежені всього чотирма варіантами – 576*432, 512*384, 448*336, 384*288.
Найбільш оптимальні установки на кліпах є такими: кадр 576*432, кодек c VKI – LM від 1200 до 1800, FM від 3000 до 6000, різкість (сrіsрnеss) у кодеку = 100, ключовий кадр кожну 1 секунду. Такі установки дають якісний результат, при цьому не смикаючись і дозволяючи виставити CPU quality у кодеку "1". На кліпах, а також на шифровках з VHS (чи Video8): кадр аж до 384*288 (а з VHS-Video8 тільки такий кадр), LM 900-100-1, FM 1800(3000)-100-1.
2.2. Робота із відеокомпресором FlasK MPEG
Flask MPEG одна із самих популярних (поряд з MPEG2AVI і DVD2AVI) програм, що дозволяє перекодувати VOB у AVI DivХ. Вона також дозволяє відкривати файли MPEG-1 і кодувати файли в MPEG-2. Так, на відміну від DVD2AVI, вона дозволяє змінювати розмір кадру, кількість кадрів у секунду і робити деінтерлейс, обрізання кадру і ставити шторки. Дозволяє записати відео і звук (АС3 чи АС3-WAV) у роздільні файли чи в один AVI. На відміну від MPEG2AVI має досить зручний графічний інтерфейс. Останні версії програми мають можливість відкривати VOB файл прямо з DVD з одночасним розкриттям, тобто убудований DeCSS (а значить заощаджується місце на гвинті). У загальному програма зручна, і все б нічого, але в неї є деякі неполадки.
Ну по-перше, це очевидно сама повільна з можливих програм, що цифрують у DivX – це відзначає і сам автор, що користається кодом групи MSSG (Mpeg Software Simulation Group), це пов'язано з декодуванням підвищеної якості і здатністю змінювати розмір кадру з поліпшеними алгоритмами. По-друге, вона не знає РСМ WAV – поки що підтримка тільки для аудіо потоків АС3 і MPEG в окремий файл, і конвертація АС3 у WAV. У якихось випадках вона вилітає при спробі відкрити інтерактивне вікно для завдання розміру кадру й обрізань-шторок. У когось у цьому інтерактивному вікні цифри на кнопках зрушення-обрізання відображаються, у когось немає (у версії 0.6 ця неполадка виправлена).
Одна з найважливіших неполадок версії 0.594 (і 0.6) – будь-яке кодування заданого фрагмента чи VOB файлу вона починає зі стоп-кадру – фрагмент починається парою-трійкою кадрів, потім йде та сама нерухома картинка кадрів 20-30, потім кодування продовжується з невеликого ривка. Звичайно звук при цьому іде приблизно на 0,3-1 секунду вперед. Незрозуміло, з чим це може бути зв'язано, ефект присутній у всіх розкритих варіантах 0.594 (h1, h2, px3). Результат – невелика десинхронізація аудіо і звуку. Її можна підправити у Virtual Dub зміною FPS на декілька сотих-тисячних, або вирізанням секунди одного кадру (результуючий файл показує на 20-30 кадрів більше, ніж треба), але ідентифікація початку фрагмента через ривок після стоп-кадру утруднена, а також невідомо точна кількість зайвих кадрів, що додаються у фільм. Крім того, початок-кінець стоп-кадру не збігається з КК. Хоча взагалі ж зрушення (interleave) аудіо підібрати в Virtual Dub можна. Узагалі ж усе це неважливо, якщо кодується повний фільм, а початок фільму приходиться на заставку або титри, чи чорний фэйд (fade).
Ну і звичайна неполадка – невелика розсинхронізація WAV і відео. Це спостерігається й у DVD2AVI і лікується тільки завданням нестандартного фрэйм-рэйта (frame rate), скажемо 25.029 fps, у Віртуал Дубі з переписом файлу без перекодування.
Практичне застосування.
У нас є DVD, списаний з розкриттям на гвинт. Нам потрібно зжати його в AVI DivХ зі зменшенням розміру кадру і накладенням фільтра деінтерлейса (забрати черезстрочні смуги), а також підрізати знизу чорні смуги.
Відкриваємо файл IFO (зі структурою DVD) чи одиничний VOB, Flas MPEG скаже нам, скільки відео, аудіопотоків і субтитрів знайдено, дозволить вибрати потрібний потік аудіо і субтитри.
Іноді при відкритті VOB чи диска FlasK MPEG не знаходить звуку. Але якщо звук там усе-таки є, то потрібно збільшити буфер пошуку – "Опції / Установки проекту / Різне (=Фрагмент) / Розмір буфера пошуку". За замовчуванням його значення дорівнює 5000 кб. Спробуйте поставити 7000, чи 10000, і знову спробуйте завантажити свій VOB файл. Файл при цьому буде відкриватися повільніше, але пропащий звук може виявитися.
Якщо потрібно відкрити файл IFO (у режимі "відкрити DVD"), а DVD тільки з одним потоком PCM WAV, то Flask MPEG просто відразу зависає. У цьому випадку приходиться використовувати пари FlasK (для відео по файлово) + DVD2AVI (для WAV аудіо) з наступним об'єднанням у VD, або DVD2AVI (для відео з максимальним бітрейтом, або через VFAPI, і WAV аудіо) + Virtual Dub (для кодування на середній бітрейт із ресайзом і об'єднання відео з аудіо).
Вибір відео кодека.
Для цього потрібно вибрати в меню Опції / Вибір формату / AVI Output. Потім вибираємо в "Опції / Установки кодерів / [Select codec] Video" потрібний нам варіант DivX і задаємо там же бітрейт і кількість КК (KF) у секунду.
Розмір кадру, обрізання, шторки.
Тепер займемося розміром кадру. Опції / Установки проекту / Відео. У нижньому ряді ми бачимо три кнопки, одна з яких "Розмір кадру", натиснемо. Одержуємо інтерактивне вікно з рядами кнопок і кадром вихідного фільму. Натиснемо "Відновити", щоб відновити реальний розмір кадру вихідного фільму. Потім кнопками [+] і [-] у розділі "Вихідний розмір" відрегулюємо ширину і висоту фільму, звіряючи з розмірами в крапках, показуваними в лівому верхньому куті кадру.
Часом зустрічається неполадка такого плану – при натисканні на "Розмір фільму" FlasK MPEG зависає з повідомленням про помилку при звертанні усередині себе. Іноді це виправляється за допомогою виставляння реального розміру кадру в поле "Розмір кадру", закладка "Відео". Для цього треба або заново відкрити файл (диск), щоб повернути ці значення у вихідне положення, або прописати його ручками, подивившись дані в меню "Запустити / Перегляд / Video Size". Справа в тім, що Flas MPEG не любить нестандартних розмірів висоти-ширини (не кратних 16) і в інтерактивному вікні завдання розмірів не дозволяє змінювати їх свавільно, але в закладці "Відео" можна прописати кривий розмір кадру і тоді вона очевидно вилітає на перевірці помилки – немає гілки алгоритму, який допускає, що встановлено неправильний розмір.
Тут же можна задати й обрізку чорних полів знизу зі зменшенням реального розміру кадру кінцевого фільму. Це дає невелику економію місця на диску (чорні поля звичайно добре пакуються, але все-таки пакуються і займають місце) і відсутність дрібних артефактів на чорних полях, що можуть з'явиться при стиску, особливо на малих і середніх бітрейтах. Для включення обрізання кадру потрібно відзначити пункт "Обрізка", потім зменшити [ – ] висоту (і/або ширину) кадру. Кадр підрізається завжди знизу (праворуч). Після цього можна задати зрушення кадру в підрізаному "вікні" нагору (уліво) і редагувати зрушення вверх-вниз (вправо-уліво) кнопками [ + ] і [ – ] біля відповідних написів.
Зменшення кадру може бути кратне тільки 16, а от зрушення може бути і на одну крапку.
Шторки застосовуються для приховання горизонтальної зрушеної смуги внизу кадру, а також для приховання інших погрішностей по краях кадру. Для приховання цих гріхів можна було б застосувати обрізання кадру, але для перегляду фільму на вихідному пристрої (ТВ) з одночасним переглядом на моніторі багато відеокарт вимагають розмірів сторін кадру фільму з кратністю 32, тобто якщо ми хочемо переглядати фільм одночасно на ТВ і моніторі, нам потрібний фільм скажемо 384х288, а не підтятий до 380х280, у такому випадку застосовуються шторки. Щоб задати шторки по краях, треба установити прапорець у пункті "Шторки" і відрегулювати їхню ширину кнопками [ + ] [ – ] зверху, знизу, ліворуч і праворуч.
Для виходу з інтерактивного вікна задання розмірів, потрібно натиснути кнопку "Сховати" (чи "Повернутися").
Деінтерлейс (коректування міжстроковості).
Опції / Установки проекту / Відео. У поле "Структура відео", відзначаємо пункт "Забрати построковість" (="деінтерлейс"). Обов'язково відзначаємо пункт "Згладжування" (="Згладжувати тільки рух"). А в поле "Границі" (="Точність") задаємо кількість папуг – чим менше число, тим точніше згладжування країв об'єктів, що рухаються, але тим повільніше кодування фільму і менше різкість картинки. Крім того, це значення впливає на масу кінцевого файлу – чим сильніше згладжування (менше значення), тим менший потік і відповідно файл. За замовчуванням це значення дорівнює 20.
На контрольному прикладі в 30 секунд простежив відмінність значень згладжування від 4 до 20 (4, 10, 15, 20). Вийшла зміна потоку від 1088 кбіт (при 4) до 1304 кбіт/с (при 20). Так що роблячи плавний деінтерлейс, ми ще і скорочуємо об’єм файлу, при цьому збільшуючи час кодування і зменшуючи різкість картинки.
FlasK MPEG часто ганьблять за погану інтерполяцію міжстроковості, навіть не подумавши прочитати readme. Насправді те, що багато хто вважає поганим деінтерлейсом, є цікавим способом не зменшувати різкість картинки при знищенні міжстроковості. Застосовуючи звичайний деінтерлейс, скажемо в Virtual Dub чи PhotoShop, ми втрачаємо різкість, тому що відбувається згладжування, розмивання (= blur) країв об'єкта – відбувається усереднення кольору по найближчим 8 крапкам, а отже ми втрачаємо інформацію, а разом з цим і різкість падає практично в 2 рази. Адже не даром же пишуть інтерлейсні фільми на DVD – такі фільми більш чіткі, чим прогресивні (зі сполученими полями), де при русі за об'єктом виникає розмите марево.
FlasK MPEG ж пропонує оригінальний вихід з цієї ситуації. З однієї сторони треба позбутися від візуальної смугастості об'єктів, що рухаються, з іншої сторони не хотілося б втрачати різкості іншої частини кадру. FlasK MPEG пропонує відслідковувати тільки предмети, які рухаються не розмиваючи все інше. Значення "Границі" (= "Точність") грубо говорячи є показником, на яку кількість крапок має право зрушитися об'єкт (адже камера не стоїть на місці, дерева небагато колишуться під вітром і т.д.) перед тим, як його почнуть розмивати. Скажемо за замовчуванням 20, значить різниця між місцем розташування об'єкта на двох накладених полях може складати 20 крапок. Якщо об'єкт зрушився більш, ніж на 20 крапок, треба розмити (інтерполювати) цю маленьку ділянку.
Звичайно 20 – це досить багато, але от скажемо зрушення на 4-8 (а в деяких і на 10-15) крапок наше око звичайно не уловлює (я не говорю про професіоналів, око яких уловлює різницю між 120 і 150 Гц на моніторі). Так що можливо ми і збільшимо час кодування і масу файлу AVI, але різкість при цьому буде вища, ніж у кадрі в два рази більшого по об’єму, але інтерпольованого звичайним, методом Віртуал Дуб.
Кількість кадрів у секунду (КВС, frame rate).
Для зменшення об’єму результуючого фільму ми можемо зменшити КВС. Але це сприятиме різним побічним ефектам. Справа в тім, що від кількості кадрів залежить плавність руху об'єктів, акторів у кадрі, і зменшуючи fps ми одержуємо як би дрібні посмикування.
Нехай у нас є рух об'єкта по кадрі ліворуч праворуч за 1 секунду. В одному випадку ми маємо на його рух 3 кадри, в іншому – 6. У першому випадку ми зафіксуємо тільки початок його руху ліворуч, потім він візуально відразу переміститься в центр кадру, а потім відразу виявиться праворуч кадру, тобто за час свого руху просто зробить два ривки по полю кадру. Тепер у випадку з великою кількістю кадрів – він з'явився ліворуч, плавно зрушився на небагато, ще на небагато, от він у центрі, знову ледве зрушився, ще, і нарешті з'явився на краю – ми побачили плавне переміщення об'єкта. Це звичайно грубий приклад, але наочно показує, що ми втрачаємо, зменшуючи fps, особливо на середньо-динамічних сценах.
На високошвидкісних сценах погоні, польоту снаряда і т.д. перекручування від зменшення фреймрейта менше через розмазаність і високу швидкість об'єктів, невловимої оком. У мультфільмах звичайно і так використовується близько 15-20 fps. На нерухомих сценах фільмів ми теж нічого не утратимо від цього. Середньо-швидкісні сцени – людина при ходьбі, машина їде на низькій швидкості, плавне зрушення камери – от вони при порівнянні з оригіналом будуть затягатися.
Робота з аудіо потоком.
Якщо нам потрібно перекодувати АС3 потік у WAV (з подальшим стиском його в mp3), то вибираємо Опції / Установки проекту / Аудіо / Кодувати аудіо. А в Опції / Установки кодерів / [Select codec] Audio – WAV PCM 48 кГц, 16 біт, стерео. Якщо ваша аудіокарта не підтримує 48, то спочатку виставляємо в Опції / Установки проекту / Аудіо / 44100 Hz (забравши фляжок у "Вихідної частоти"), потім повертаємося у Вибір аудіокодека і вибираємо 44 кГц, 16 біт, стерео.
Вибір аудіокодека стосується тільки випадку перекодування АС3 звука в WAV. Якщо потрібно використовувати АС3 у DivX фільмі, то потрібно вирізати його з VOB окремим файлом – Опції / Установки проекту / Аудіо / Без зміни.
Відкривши [Select codec] Audio можна не знайти там кодека MP3. В разі його необхідності або втрати часу на поліпшення якості, спробуйте закрити програму і відкрити її знову з тим же файлом (закрийте усі відкриті копії Flask MPEG), або перезавантажити систему. Якщо кодек не з'явиться, потрібно переустановити його в системі, іноді це допомагає. Але найкраще звичайно використовувати спеціалізовані аудіопрограми для стиску в MP3. Наприклад можна використовувати ".mp3 Producer" від фірми Fraunhofer. У цьому випадку AC3 чи mp2 звук з VOB конвертується спочатку в WAV, а потім стискується Продюсером.
Вибір фрагмента.
Якщо нам потрібно перекодувати весь відкритий фільм, то ставимо прапорець у пункті "Конвертувати весь фільм" (="Обробити до кінця фільму"), у закладці "Різне" ("Фрагмент"). Але якщо нам потрібний не весь фільм, а тільки фрагмент, то запускаємо внутрішній програвач Flask MPEG в меню "Запустити / Перевірку" (="Перегляд"). Далі натискаємо кнопку [Play] і перетаскуємо ролик до потрібного місця, потім нажимаємо [Stop], [Exit]. Flask MPEG звичайно починає конвертувати фільм від останнього зупиненого місця, так що якщо ви просто переглядали фільм в убудованому програвачі, а конвертувати треба з початку файлу, то не забудьте натиснути в програвачі кнопку [Seek First] – вона відмотає ролик на початок. Потім заходимо знову в "Опції / Встановлення проекту / Різне" і або відзначаємо пункт "Конвертувати до кінця", або задаємо довжину фрагмента в секундах, або в кадрах.
Досить важко задати той самий шматок двічі в убудованому програвачі – там немає ніяких прив'язок і шкал. Деякі варіанти Flask MPEG (h1, h2) відрізняються тим, що можна задати в розділі "Різне" (="Фрагмент") початок фрагмента (правда у відносних одиницях – порціях фільму), число встановлюється саме, якщо пересунути ролик в убудованому програвачі, або можна вставити число руками. Це дає нам можливість запам'ятавши число в поле, при відкритті цього ж файлу наступного разу, вибрати ідентичний фрагмент. Варіант "px3" теж дає можливість більш плавного зсуву ролика, але там, як і в звичайному варіанті приходиться установлювати ролик "на око", крім того, у цьому варіанті при зрушуванні ролика лізуть "артефакти".
Вибір шляху й імені кінцевого файлу і Конвертація.
Після того, як ми задали кодек, фрагмент, зміна розміру кадру, кроппінг, деінтерлейс, нам залишилося задати тільки шлях вихідного файлу. У закладці "Файли" ("Опції / Встановлення проекту/") ми задаємо шлях і назву кінцевого файлу AVI. Після цього нам залишається вийти в меню "Запустити / Конвертер" і почнеться конвертування фільму. Якщо ми помітили в параметрах конвертації яку-небудь помилку (а параметри виводяться у вікні під час конвертації), можна зупинити процес кнопкою Cancel, виправити параметри і запустити конвертацію заново.
Висновок
Історія розвитку MPEG показала нам, що із розвитком інформаційних технологій, відбулось реформування MPEG. Так із MPEG-1 ми перейшли до MPEG-4. За цей час встановилися нові стандарти роботи із відеокадрами, які призвели до створення нових програм та покращення якості відеокадрів. Звичайно зараз існує вже багато програм для роботи із MPEG, але кожна із них має свої недостатки. Ми розглянули дві із них і побачили, що кожна має своє застосування і недоліки.
При роботі із програмою ProjectDivX ми розглянули, як працювати з програмою при кодуванні одного формату в інший. Також було розглянуто, як виставити бітрейт, розмір кадру та роздільна здатність фільму. Також ми розглянули, який варіант кодека нам потрібний для даного фільму. Робота із FlasK MPEG полягала у виясненні її недоліків та встановленні практичного застосування.
З застосуванням останніх технологій кодування, програми дозволяють стискувати оригінальний DVD диск з розширенням MPEG-1 або MPEG-2 в 10 і більше разів, розміщуючи його на 1-2 компакт диски, і зберігаючи при цьому якість фільму на хорошому "споживацькому" рівні – набагато краще VCD або VHS. І ця якість достатньо придатна для перегляду на середньому домашньому комп’ютері або для виводу з комп’ютера на телевізор.
Загалом, дана робота має важливе значення при використанні відеокомпресорів у навчальній шкільній програмі. Адже поступово шкільна програма з інформатики розширюється і буде розширюватись в різних напрямах. Тому використання відеокомпресорів має важливе значення для школи в майбутньому.
Література
1. http://mpeg.boom.ru // Эпоха цифрового видео и звука. Конвертируем AVI в MPEG-4.
2. http://mpeg.boom.ru // Эпоха цифрового видео и звука. Конвертируем DVD в MPEG-4.
3. http://mydivx.da.ru // (c) 03/2001, Сибирский Лихоман Virtual Dub. Предварительный обзор.
4. http://mydivx.da.ru // (c) 02/2001, Сибирский Лихоман. FlasK MPEG. Фласка - зачем она нужна и как с ней бороться.
5. http://mydivx.da.ru // (c) 01/2001, Сибирский Лихоман Выбор размера кадра, битрэйта и кодека.
6. http://mydivx.by.ru/my/article/d-x-proj.htm // Что это такое и чем он интересен.
7. http://mydivx.by.ru/my/article/d-x-proj.htm // Сибирский Лихоман "DivX ;)". Кодирование, или Фильм с DVD качеством на одном CD.
8. Диск “MPEG – 1, 2, 3, 4” // Робота с MPEG – 1, 2;
9. Диск “MPEG – 1, 2, 3, 4” // Робота с MPEG – 4.