Как вы знаете, команда Project Mayo занимается проектом OpenDivX в том числе и для Pocket PC. Это плеер, предназначенный для просмотра видео файлов, кодированных с помощью алгоритма MPEG4 и звукового сопровождения, кодированного в MP3. Многие, наверное, видели диски с фильмами в MPEG4 да и просто видеодиски, но для просмотра на PocketPC необходимо совершить некоторое кол-во действий. В этой статье я постараюсь рассказать, как оптимизировать видео для пр осмотра на DivX плеере на вашем карманном друге.
Для начала поговорим о размере и носителях. Память на карманных устройствах ограничена, но возможности расширения очень хорошие. Для того, чтобы смотреть фильм, необходимо карта с объемом не менее 128 мег. Скорости будет вполне достаточно. Даже у IBM Microdrive (MD), хотя с ним есть некоторые особенности. Во первых, во время проигрывания DivX фильма, процессор постоянно работает с полной загрузкой, занимаясь разкодированием кадров и звука, а постоянные обращения к MD приводят к быстрой разрядке батарей. Поэтому для просмотра фильмов с MD в плеере предусмотрена функция File Cache. Ее использование позволяет экономить энергию, обращение к диску идет каждые 3-4 минуты, т.к. размер кэша устанавливается в 4 мБайт. Все равно при полностью заряженной батарее Casio живет около 1 часа. При использовании твердотельных расширителей памяти (карт памяти) кэширование не требуется, время жизни от батареи достаточно для просмотра 2-2,5 часов видео. При конвертации видео-файла в MPEG4 с нормальным соотношением объем/размер картинки/качество/кол-во пропущенных кадров (при проигрывании на PocketPC устройстве) получается около 70 мег на 1 час, так что фильмы получаются около 110 мег в зависимости от их жанра (да, да ! если в фильме много сцен с быстрым движением, размер файла – больше, скорость меньше и.т.д)
Все сказанное выше справедливо для текущей версии DivX плеера (0.4) и устройств под управлением Wince 2.11 и выше. (Casio E1xx, Compaq iPAQ, HP Jornada) с процессорами MIPS, ARM, SH3.
Что вам потребуется?
Карманный компьютер: (не забывайте качать версию для своего процессора)
- GAPI Library
- DivxPlayerCE
- Xaudio.dll
Устанавливаете DivX плеер путем копирования всех файлов из комплекта в нужную директорию.
Копируете GAPI Runtime Dll на PocketPC в директорию /windows (хотя если Вы играете в игрушки, я думаю, она там уже есть). Файл xaudio.dll можно получить в комплекте с SDK Xaudio на сайте производителя. Он нужен для декодирования MP3. Его надо тоже скопировать в /windows (я еще скопировал в директорию, где лежит сам DivX). Можно п оискать его просто в нете, набрав имя в поисковике. Он не распространяется бесплатно, но найте можно. Версия нужна 3, 2, 7, 0. Вроде как с версии 0.5 будет использоваться другая библиотека MAD для декодирование MP3 потока, она бесплатная, но что будет с производительностью, непонятно. А звук занимает очень большую часть в работе декодера, проверенно. Хотя на форумах разработчики утверждают, что падения производительности нет.
Desktop PC
Тут все проще.
DivX – кодировщик/декодировщик. Устанавливается вместе с плеером "the playa". Версию 3.11 Alpha лучше не использовать.
VirtualDub – Freeware программа, на мой взгляд, лучшая, для кодирования аудио-видео потоков. У нее огромное кол-во опций, поначалу это пугает, но разобравшись вместе, вы поймете, что делаете, и процесс перекодировки будет для Вас не сложен. Существуют другие программы для перекодировки видео, например Flask MPG, но мы будем рассматривать здесь только VirtualDub.
Mpeg кодировщик – для перекодировки звука. После установки возможно придется перегрузить компьютер. Устанавливается в Аудиокодеки в панели управления.
Для начала надо, чтобы файл, который для нас является исходным материалом, был в одном из форматов, который "понимает" VirtualDub (VD). Это MPEG-1, ASF, and AVI. Причем, как вы понимаете, AVI может быть кодирован кодеком, тем же MPEG4. Если Ваш исходный файл другого формата – Вам придется его перевести в один из указанных выше. Как это сделать – тема не этой статьи.
Для начала запустите VD и откройте файл-источник (File Open)

В меню Video и Audio убедитесь, что стоит "Full processing mode". Это необходимо для того, чтобы VD обрабатывал потоки. Потом идите в Audio Interleaving меню. Т.к. наш результат - AVI, надо выбрать Audio-Video Interleave (см. картинку):

Теперь нам надо выбрать каким способом компрессируется Audio. Идем в меню Audio compression и выбираем там 'MPEG Layer-3' as the codec. Если его там нет, значит аудио-кодек установлен не правильно. Обращаю ваше внимание, что плотность аудиопотока и частота дискретизации играют очень большую роль в смотрибельности конечного продукта. Не гонитесь за стерео, все равно динамик у наших машинок моно, а в наушниках будет слышно низкое качество. Используйте только "основные" скорости, типа 11, 22, 44, иначе Ваш плеер не сможет их игр ать Я бы посоветовал исползовать Mono 24/8. А так все зависит от производительности и ваших потребностей. Если Ваш фильм на Pocket устройстве тормозит, уменьшайте DATA Rate. И обязательно обратите внимание, что в меню audio Conversion вы поставили конвертацию потока в выбранную вами ширину (Sampling Rate) и также переконвертаци Stereo/mono. Остальные параметры менять не нужно (здесь я использовал Стерео и поток 22050).

В любом случае для каждого фильма придется подбирать параметры аудио и видео конвертации, но, надеюсь, Вы уже будете представлять, что делаете.

Теперь Видео. Сначала в меню video Compression выбираем 'DivX MPEG-4 Codec' как показано ниже:

Обратите внимание, что кодировщик MPEG-4 воспринимает поток с глубиной цвета 24 и 32 бита. НЕ ПЫТАЙТЕСЬ стаить 16 исходя из того, что на Casio экран 65535 цветов. Ставьте 24. Это можно сделать в меню Video Color Depth. Связано это с тем, что поток преобразуется в формат YUV-24, а потом в RGB.

Итак, выбрав кодировщик MPEG-4 надо зайти в его свойства и поставить там скорость видео потока. Эксперементально найдено, что оптимальным будет значение от 75 до 500. Это определяет соотношение размер файла/качество. Чем больше объем данных в каждом кадре (а извесно, что MPEG4 кодирует ИЗМЕНЕНИЕ кадра по отношению к предыдущему или к опорному), тем больше файл и выше качество. Я использую 200-250. Меню Variable Bit Mode определяет кол-во проходов. Теоретически 2-х проходная конвертация лучще, но у меня не вышло.
Остальные параметры лучше не трогать.
Выставите все так, как показано и нажмите ОК:

Теперь очередь фильров. Они находятся в меню Video Filters. Выберите добавить и укажите фильтр Resize.

Теперь самое главное. Здесь мы определяем размер будущего кино в пикселях. Для просмотра лучше использовать маленькое окошко или возможность плеера удваивать изображение. Я рекомендую использовать 160/112 или 160/120 или близкое к этому (Правда на разрешении 160/120 иногда появляются черные квадраты внизу, используйте 160/112. Разработчики обещали поправить в следующем релизе). Метод – Bicubic (для лучшего качества). Если Вам необходимо увидеть планируемый размер, можно посмотреть Preview.


Также можно добавить фильтр для поворота изображения. Тогда в окне фильтров будет виден размер после обработки фильтром поворота. Я еще увеличивал яркость немного.


Такие параметры у меня стояли для конвертации фильма "Матрица". Кнопка Cropping служит для обрезания черных полос (как снизу/сверху, так и с боков). Кстати для проигрывания на Compaq iPAQ ничего поворачивать не надо, плеер сам повернет. Если вы планируете смотреть фильм в LandScape, то поворачивать надо на этом этапе, а не на просмотре.
Если Вам необходимо перекодировать только кусочек фильма, или Вы подбираете настройки, то можно выделить фрагмент в меню Video Select Range. Используя полосу прокрутки VD выберите фрагмент с большим кол-вом движения и закодируйте его для пробы. Потом будет меньше проблем. Указывайте начальный кадр и кол-во (около 3000), тогда файл будет около 3 мегов. Будьте уверены, что 2 остальных пункта включено (синхронизация АУДИО и конец Аудио по окончании видео):

Теперь самое время сократить количество кадров в сек. Идите в Video Frame Rate menu. НЕ СТАВЬТЕ конвертацию, это приведет к рассинхронизации видео/звука. Выбираем Process every other frame, тем самым уменьшая кол-во кадров в 2 раза. Будет около 10-12:

ВСЕ! Теперь я рекомендовал бы сохранить настройки в меню FILE. Теперь File Save AVI и выбираем имя нового файла. У меня при конвертации на Coppermine 500 конвертация шла в реальном времени, т.е. фильм целиком где-то 1,5 часа. Когда процесс завершен, Скопируйте файл в директорию My Document На карте памяти или на самом Pocket PC. Конечно для переноса больших файлов лучше использовать USB Reader. У меня стоит Hama. Запускаем DivX , выбираем файл и наслаждаемся! В опциях можно поставить Clean Video, на Casio в режиме ZOOM это прибавляет качества. Опция Keep Alive – чтоб не выключался. File Cache – для MD (см начало статьи). Отдельное замечание – я для переключения задач использую PocketNAV. Его придется не грузить, с ним все это хозяйство не работает, также как и с WizBar.
DivxPlayerCE находится в стадии разработки, не ждите от него качества DVD. Смотреть можно очень хорошо, а на разогнанных машинках были результаты 320*240/12 кадров. Все еще впереди. Надеюсь вам помогла эта статья!
Скриншоты автора, а также с сайта PDAtweaks.
Примерчик можно скачать здесь.
Дополнительные материалы:





