На данный момент использование стандарта
сжатия MPEG-1 является уже не актуальным и применимо лишь в системах
с низкой производимостью. Наиболее широко распространенным стандартом
на пользовательском уровне на данный момент является MPEG-4 позволяющий
передавать видеосигнал используя новый алгоритм низкопоточного
вещания. Подробнее о нем вы можете почитать здесь.
Не секрет, что при оцифровке видео
на компьютере, размер получаемых файлов просто громаден. Имеется
ввиду случай, когда Вы подаете видео-сигнал на TV-IN Вашей видео-карты
и осуществляете захват видео-сигнала. Не сжатый файл видео-изображения
занимает около 450Мб/мин. Естественно, хранить такие объемы нерационально.
Помочь нам в этом призваны программные кодеры видео в стандарт
MPEG-1.
Т.е. они кодируют файлы *.avi в файлы *.mpg, существенно уменьшая
объем места, необходимого для их хранения. Кроме того, существует
возможность одновременного кодирования и звука. Т.е. из двух раздельных
файлов *.avi и *.wav можно получить один *.mpg в котором изображение
и звук будут закодированы в одном цифровом потоке. Если же несжатый
звук изначально находится в одном потоке с видео, то программа
кодер также "видит" его и обрабатывает в дальнейшем.
Здесь рассмотрен случай использования
программы Panasonic MPEG1 Encoder. Официальная страница,
на которой выкладываются последние версии, находится здесь.
На текущий момент выложена версия 2.51, однако, на нее пока нет
патча. С версией 2.3, представленной здесь все в прорядке. Пока
предлагаю использовать ее.
Итак, вот список необходимого софта
для перекодировки:
Panasonic MPEG1 Encoder Software
Ver.2.3 Trial это сама программа кодер *.avi в *.mpg. После
того, как Вы скачаете дистрибутив - инсталлируйте ее, принимая
предлагаемое по умолчанию место установки. Программа изначально
идет как Trial version и имеет ограничение работы 30 дней.
Кроме того, при обработке файла кодируются только первые 30сек.
фильма, да еще и отображается в самом низу экрана при просмотре
черная полоска с логотипом Panasonic MPEG1 Encoder. Помочь
нам снять все это безобразие призван патч. Распакуйте его в ту
же папку, где находится установленный кодер Encoder 2.0.
Нажмите дважды на файл Panasonic MpgEnc 2.30 Crack, а потом
на кнопку Apply Patch. После всего этого ограничения должны
быть устпешно сняты.:)
Данная прогамма кодер позволяет вместе
с изображением запаковывать в один цифровой поток и звук в рамках
стандарта MPEG-1. Необходимо лишь указать место расположения аудио
и видео файлов на диске, задать имя и адрес конечного файла, настроить
параметры кодека и нажать Start Encoding. Настройки программы
достаточно доступны для самостоятельного освоения. Рекомендую
лишь поупражняться с небольшими по объему файлами, чтобы не ждать
долго результатов, т.к. процесс достаточно продолжителен даже
на быстрых машинах.
При выборе опции Anvanced Settings
Вы получаете доступ к некоторым настройкам кодека. О том, что
представляет собой опция GOP Sequence можно почитать здесь.
Обратите внимание на то обстоятельство,
что при выборе Type: VCD/NTSC Stream (*.mpg) или Type:
VCD/PAL Stream (*.mpg) большинство настроек фиксировано по
умолчанию и превысить некоторые значения нельзя. Большую
свободу выбора дает выбор опции Type: MPEG1 System (*.mpg).
здесь Вы можете варьировать в широких пределах. Закономерность
тут линейная - чем выше значения цифрового потока, тем выше качество
получаемого изображения. На личном опыте могу сказать, что уже
начиная с величины 1600-1700kbits/sek(video), разрешении 480x320
и 128kbits/sec(audio) получается достойная картинка. Практически
отсутствует мозаичность изображения на тяжелых участках фильма
(динамичные сцены, резкая смена панорамы и т.д.), резкость изображения,
в свою очередь, несколько выше чем у обычного VideoCD.
В случае, если Вы решили использовать
данный метод для перекодировки фильма, записанного по алгоритму
DivX ;-) - осуществить это можно только после соответствующей
подготовки исходного файла. Что имеется ввиду? Звук должен быть
не компрессированным, в исходном же файле он сжат либо в MP3,
либо с помощью DivX ;-) Audio codec. Следовательно, звук
необходимо сначала вывести в несжатом виде наряду с прямым копированием
потока видео в промежуточный файл. От исходного файла промежуточный
будет отличаться тем, что звук будет не сжат. Естественно и объем
файла увеличится. Вся эта процедура осуществляется в программе
VirtualDub.
По-опыту могу сказать, что синхронизация звука и изображения при
перекодировке сохраняется.
Опишу подробнее эу процедуру на примере
фильма "Глубокое синее море", продолжительностью 99мин. Задача
следующая - конвертировать фильм с диска в стандарте MPEG-4 в
поток MPEG-1 и записать его на две подложки CD-R с максимальным
для данного объема качеством. Для чего поставлена такая задача
- для того, чтобы иметь возможность смотреть фильма через аппаратный
MPEG1/2 decoder Hollywood Plus (или подобный) на экране
TV.
Последовательность телодвижений тут
следующая:
- запускаем программу VirtialDub и открываем
в ней файл фильма с расширением *.avi;
- выбираем опцию File Information и выясняем
количество фреймов в фильме - 142224, а заодно и частоту смены
фреймов - 23,976fps - это значение нам понадобится для настроек
кодера в дальнейшем, но его можно и изменять;
- делим фильм на две равные части - 71112,
выбирая опцию Select Range=>Length=71112=>Ok;
- устанавливаем Video=>Direct Stream Copy
- прямое копирование потока и Audio=>Full Processing mode=>Conversion(44100Hz,16-bit,Hight
quality,Stereo)=>Compression(No compression(PCM)) - копирование
звука в несжатом виде;
- указываем путь и название первой части фильма
и сохраняем отрывок, выбирая опцию File=>Save AVI - полученый
файл будет содержать первую часть фильма, причем звук быдет
несжатым. Не удивляйтесь, если его объем будет больше, чем у
исходного файла, поскольку в нем звук сжат и занимает лишь около
15% от общего объема.
Аналогичным образом выводится
и вторая часть фильма, с той разницей, что в поле Start offset
уже необходимо поставить значение фрейма, находящегося в середине
фильма, т.е. "71112", а в поле Lenght - продолжительность
отрывка, расчитав ее следующим образом - 142224-71112=71112. В
нашем случае, поскольку мы делим фильм на две равные части, то
продолжительность отрывка совпадает со значением стартового фрейма.
В результате мы получим две
равные части фильма, обозначим их условно DeepSea-part-I.avi
и DeepSea-part-II.avi. После этого открываем программу
Panasonic MPEG1 Encoder и по описаной в начале страницы
методике конвертируем каждую часть отдельно в поток MPEG-1. Надо
сказать, что на моей машине P-II/450MHz/128 эта процедура заняла
около 10-ти часов на каждую часть фильма. Можно конечно было бы
использовать другую программу, например LSX-MPEG
Encoder и сократить время на кодирование, но есть определенная
причина, которая заставила использовать именно кодер "Panasonic
MPEG1 Encoder" и вот какая - сохнанить формат изображения 16:9
при перекодировке DivX ;-) в MPEG-1 и просмотре полученного файла
через аппаратный MPEG1/2 decoder на экране TV, на текущий момент
удается только в программе Panasonic MPEG1 Encoder. Для
этого необходимо выбрать настройку Special Processing=>Crop
Processing=>Add Black и указать в окошках Cropping Size
Top: и Bottom: количество пикселей, в которых задается
ширина черных полос сверху и снизу изображения. Методика расчета
количества пикселей следующая: допустим фильм имеет разрешение
640x304. Размер экрана стандартного телевизора имеет пропорцию
4:3, т.е. коэффициент соотношения - 1.3(3). Далее, делим 640 на
этот коэффициент и получаем 480 пикселей. Т.е. если бы картинка
имела по горизонтали 480 пикселей, то она шла бы в формате 4:3
без геометрических искажений. Однако, поскольку исходная картинка
имеет 304 пикселя, то надо довести это значение до 480-ти добавлением
черных полос равной ширины сверху и снизу. Отсюда получаем (480-304)/2=88
пикселей. Т.е. в полях Top: и Bottom: прописываем
именно эти полученные цифры, т.е. "88".
Я эту методику расчета придумал сам,
поэтому полной гарантии в ее правильности дать не могу:), однако,
на практике пропорции изображения удалось сохранить. Если же смотреть
полученный файл на мониторе, то картинка отображается сжатой,
поэтому повторяю - добавление черных полос необходимо применять
только в случае, если планируется использовать для просмотра аппаратный
MPEG1/2 decoder, иначе, изображение будет растянуто на весь экран...
Теперь скажу пару слов о том, как
можно примерно расчитать максимальную скорость для цифрового потока
с тем, чтобы каждая часть фильма уместилась бы на подложке CD-R.
Учитывая то, что скорость потока звука и видео будут практически
постоянными - можно расчитать объем получаемого файла по следующей
формуле: video bitrate(kBit/sec) = 8 * CD-R(Mb) * 1024 / t(sec)
- audio bitrate(kBit/sec).
Здесь необходимо вставить значение
объема матрицы (650 или 700) и значение выбранной скорости аудио-потока,
тогда мы получим искомое значение для видео-потока в кБит/сек.
Затем его нужно будет округлить до значения, кратного 16-ти (это
условие требуется программой).
Для нашего случая с фильмом Глубокое
синее море, получим 1776кБит/сек при объеме матрицы
700Мб, длительности части фильма 50мин(3000сек) и скорости аудио-потока
128кБит/сек.