Реферат по предмету "Программирование и компьютеры"


Кодирование видеоинформации

Содержание Введение 1.Современные аудио и видео форматы 1.1 MPEG-4. Что это такое? 1.2 Основы MPEG-кодирования видео
1.3 Основы фрактального кодирования изображений 1.4 Индивидуальные объекты 1.5 Что такое DivX? 1.6 MPEG Layer 3, и не только 2. Кодирование видео 2.1 Источник DVD 2.2 Источник VHS и TV 2.3 Обработка 3. Пишем битрейт-калькулятор 3.1 Постановка задачи 3.2 Реализация программы Заключение Список используемой литературы Приложение 1. файл BIT.cpp Приложение 2. Файл resource.h Приложение 3. Файл StdAfx.h Введение DVD медленно, но верно добивается признания: стремительное падение цен на проигрыватели этого формата позволяет устанавливать их в каждый новый компьютер. Притом, что большинство DVD плееров поддерживают Video CD и Super Video CD, на чистый компакт диск можно скопировать взятые напрокат фильмы на DVD, а также старые записи на кассетах VHS. Кодирование видео дело непростое, для этого может потребоваться масса времени, так как оцифровка видео потребует много часов машинного времени, программного обеспечения, большая часть используемых программ бесплатна и требует тщательной настройки, также возможно не будет существовать программы, которая полностью смогла бы осуществить ваши нужды. В таком случае можно попытаться написать такую программу вручную. И, наконец, для кодирования видео необходим вместительный винчестер, потому что даже сильно сжатое видео будет занимать не менее 500 мегабайт. В своей курсовой работе я рассмотрю некоторые современные форматы сжатия видео и аудио данных, расскажу о записи и кодировании видео с различных источников, а главное напишу программу необходимую для вычисления видео битрейта для кодеков DivX 3.1 и DivX 4 формата mpeg4. 1.Современные аудио и видео форматы 1.1 MPEG-4. Что это такое? Основы разработки стандарта MPEG-4 заложены группой ученых из MPEG еще в 1993 году, и уже к концу 1998 года произошло утверждение первого стандарта. Впоследствии стандарт неоднократно дорабатывался, в 1999 году получил официальный статус и затем был стандартизован со стороны ISO/IEC. Целью создания MPEG-4 была выработка стандарта кодирования, который обеспечил бы разработчиков универсальным средством сжатия видеоданных, позволяющим обрабатывать аудио- и видеоданные как естественного (снятого с помощью видеокамеры или записанного с помощью микрофона), так и искусственного (синтезированного или сгенерированного на компьютере) происхождения. Это обстоятельство кардинальным образом отличает MPEG-4 как видеостандартов предшественников MPEG-1 и MPEG-2, в которых эффективное сжатие данных достигается лишь применительно к естественному видео и аудио. MPEG-4 обеспечивает необходимые средства для описания взаимного расположения объектов (элементов) сцены в пространстве и времени с целью их последующего представления потенциальным зрителям в ходе воспроизведения. Разумеется, такая трактовка предполагает разделение сцены на составляющие ее объекты, что само по себе является весьма трудоемкой задачей, к которой, по сути, и сводится MPEG-4 кодирование. Кроме того, при разработке стандарта MPEG-4 решались проблемы обеспечения воспроизведения объектов сцены в различных условиях пропускной способности сетей передачи данных. Был разработан формат, допускающий «универсальный доступ» к мультимедийной информации с учетом возможных ограничений полосы пропускания, возникающих в сетях при самых разных условиях. Другими словами, один и тот же видеофрагмент может быть представлен с различным качеством для различных каналов в зависимости от их пропускной способности. Кодирование в формате MPEG-4 раздельное. Это означает, что для кодирования видео составляющей применяются одни способы и алгоритмы сжатия, а для кодирования аудио составляющей – другие. Естественной издержкой такого специфичного подхода к сжатию является необходимость сопоставления двух потоков в ходе их последующего совместного воспроизведения в режиме реального времени. В основу функций сжатия видео составляющей стандарта MPEG-4 была положена технология применения целого арсенала алгоритмов сжатия, применяемых как в зависимости от исходного качества и природы сжимаемого видеофрагмента, так и в совокупности и (или) последовательно обрабатывающих исходное видео с помощью различных по природе алгоритмов сжатия. Это методы прогрессивного и словарного кодирования, кодирования с использованием чересстрочного сканирования, технологии RLE (Run Length Encoding), технологии векторной квантизации (Vector Quantization), а также всевозможные преобразования (Фурье, Дискретное Косинусное, Wavelet). 1.2 Основы MPEG-кодирования видео Первоначальное кодирование видео в MPEG-4 осуществляется аналогично MPEG-1 и MPEG-2. В этом смысле основа кодирования у группы алгоритмов MPEG общая. Основные идеи, применяемые в ходе сжатия видеоданных с ее помощью, следующие: · Устранение временной избыточности видео, учитывающее тот факт, что в пределах коротких интервалов времени большинство фрагментов сцены оказываются неподвижными или незначительно смещаются по полю. · Устранение пространственной избыточности изображений путем подавления мелких деталей сцены, несущественных для визуального восприятия человеком. · Использование более низкого цветового разрешения при yuv-предеставлении изображений (y — яркость, u и v — цветоразностные сигналы) — установлено, что глаз менее чувствителен к пространственным изменениям оттенков цвета по сравнению с изменениями яркости. · Повышение информационной плотности результирующего цифрового потока путем выбора оптимального математического кода для его описания (например, использование более коротких кодовых слов для наиболее часто повторяемых значений). Кроме того, основная идея заключается в разделении кадров на опорные (I — intra), а также так называемые предсказанные (то есть строящиеся на основе опорных) — как однонаправленные (P – predicted), так и двунаправлено предсказываемые (B – bi-directionally predicted) кадры (под направлением здесь следует понимать временную последовательность представления кадров видео). Однако MPEG-4, кроме рассмотренного традиционного MPEG-кодирования, основанного на прямоугольных кадрах, использует технологию так называемого фрактального или контурно-основанного кодирования изображений. 1.3 Основыфрактального кодирования изображений Для понимания принципов контурно-основанного кодирования изображений, применяющегося в MPEG-4, уясним себе несколько простых идей. Контур — это линия, очерчивающая границу фигуры на плоскости. Текстура – представление структуры поверхности изображения. Контурно-основанное кодирование изображений представляет изображения как контуры, огибающие текстурные области (области, заполненные текстурами). А так как контуры, как правило, совпадают с границами изображаемых объектов сцены, то задача контурно-основанного кодирования сводится к задаче объектно-основанного кодирования изображений, а именно: изображение представляется набором составляющих его объектов.
После того как контуры и текстуры вычленены из изображения, контуры могут быть представлены как контрольные точки «сплина» (spline) – полиномиальной функции, используемой для представления кривых, «обтягивающих» тот или иной контур. Текстуры же, в свою очередь, могут быть представлены в качестве коэффициентов какого-либо пространственного преобразования частоты (например, дискретного косинусного или дискретного wavelet-преобразования). Сжатие же может быть достигнуто путем скалярной или векторной квантизации контрольных параметров «сплина» и коэффициентов преобразования, используемых для представления текстуры. Но не будем вдаваться в математические детали, используемые в ходе кодирования видео.
Что и говорить, задача контурно-основанного кодирования в настоящее время является одной из наиболее перспективных и, пожалуй, одной из весьма трудоемких (с точки зрения вычислений). Говоря простыми словами, MPEG-4 обеспечивает возможность индивидуально кодировать специфические элементы в рамках видео сюжета. Поскольку разные объекты, используемые в видео сюжете, как правило, имеют различную природу (текстурный фон, персонажи переднего плана, мелкие детали сцены), то совокупность различных по природе способов сжатия, используемых для разных типов данных, в зависимости от их природы, позволяет добиться наиболее высокой степени сжатия. 1.4 Индивидуальные объекты Основным отличием MPEG-4 сжатия от предшествующих алгоритмов сжатия видео MPEG-1 и MPEG-2 является не сжатие последовательности прямоугольных кадров, а использование принципа кодирования индивидуальных объектов произвольной формы. Кодирование формы, или альфа канала, означает, что произвольная форма в сцене MPEG-4 может отслеживаться посредством двоичной альфа карты, определяющей принадлежность данного пиксела к объекту. Это особенно полезно для разработчиков интерактивного кон тента по нескольким причинам. Во-первых, видеоинформация не обязательно должна быть оформлена в виде прямоугольных кадров. Во-вторых, индивидуально закодированные видео формы можно интегрировать с другими объектами, такими как 2D-, 3D- или естественный видеофон, образуя сцены. Наконец, особый интерес для разработчиков представляет возможность использования отдельных объектов в качестве элементов интерактивного действия. Примерами могут служить простые взаимосвязи в рамках сюжета или смоделированные персонажи, реагирующие на действия пользователя. Результатом такого объектного подхода стала возможность интеграции естественных и синтетических видеоисточников. Стандарт MPEG-4 содержит средства интеграции для кодирования растровых видео изображений и средства создания и интеграции синтезированных 2D- и 3D-элементов, включая геометрические формы и объекты, текст и синтезированную графику. 1.5 Что такое DivX? История возникновения этой аббревиатуры весьма таинственна. Дело в том, что изначально аббревиатурой DivX назывались обычные DVD-диски с ограниченным количеством возможностей просмотра видеофильма, однако не так давно ее смысл значительно изменился. Итак, речь идет о совершенно иной технологии, для обозначения которой используется аббревиатура DivX. Как утверждают источники (www.news.com), двое хакеров явили миру новый формат сжатия видео файлов, названный ими DivX. На самом деле DivX является всего лишь взломанной версией Microsoft MPEG-4 Video Codec (Low-Motion-кодек — это взломанная версия 4.1.00.4920 MPEG4v3, а High-Motion-кодек – 4.1.4917 MPEGv3). Как утверждают авторы, они его слегка доработали и улучшили. В частности, они сделали возможным вывод файлов после компрессии в формате *.avi, в то время как кодек MPEG-4 Video Codec поддерживает формат *.asf и устанавливается вместе с Windows Media Player или Windows Media Tools. То есть фактически данный алгоритм официально не поддерживается, по крайней мере, в таком исполнении, тем не менее, DivX базируется на формате MPEG-4. Прелесть алгоритма DivX заключается в том, что фильм длительностью до трех часов можно сжать до объема, умещающегося на одном CD, что вдвое меньше, чем у MPEG-1, при этом результатом будет более качественная картинка, особенно в плане разрешения. Появившиеся на рынках диски с записью фильмов в стандарте MPEG-4 — случай подобного использования алгоритма DivX. Их стоимость сегодня составляет от 50 до 100 рублей в зависимости от качества и содержимого. В качестве источника, как правило, используется DVD. Большинство фильмов записано в формате 16:9, дает не лучшую картинку на мониторе, однако качество таких фильмов, как правило, выше, чем фильмов с обычным форматом 4:3. Кроме того, чем меньше продолжительность фильма, тем большую скорость цифрового потока можно использовать, заполняя все пространство диска CD. Разумеется, и качество в этом случае будет выше. Предположим, к вам какими-то загадочными путями попал DVD-диск с хорошим фильмом. Благодаря технологии DivX вы можете сохранить файл фильма у себя, скажем, на жестком диске, да еще и прилично сжать его по объему, правда, с некоторой потерей качества. В дальнейшем полученный сжатый файл можно записать на CD-R, как и любой другой файл, и использовать его в нужное время. Если говорить о недостатках DivX, то нельзя не отметить отсутствие возможности просмотра полученного фильма на обычном домашнем телевизоре. Правда, ситуация может оказаться разрешимой, если у вас имеется видео карта с неплохим TV выходом, однако даже в этом случае изображение будет слегка размытым и далеким от совершенства. 1.6 MPEG Layer 3, и не только Для эффективного кодирования аудиоданных применяются наиболее прогрессивные методы, в основе которых лежит свойство их универсальности и независимости от качества исходного звукового фрагмента, равно как и результирующего, в зависимости от установок, применяемых в ходе сжатия. В настоящее время наиболее известны mp3, wma и divx audio . Все они используют так называемое кодирование для восприятия (perceptual coding), при котором из звукового сигнала удаляется информация, малозаметная для слуха. В результате, несмотря на изменение формы, и спектра сигнала, его слуховое восприятие практически не меняется, а степень сжатия оправдывает незначительное уменьшение качества. Такое кодирование относится к методам сжатия с потерями, когда из сжатого сигнала уже невозможно точно восстановить исходную волновую форму. Приемы удаления части информации базируются на особенностях человеческого слуха, называемой маскированием: при наличии в спектре звука выраженных пиков (преобладающих гармоник) более слабые частотные составляющие в непосредственной близости от них на слух практически не воспринимаются (маскируются). При кодировании весь звуковой поток разбивается на мелкие кадры, каждый из которых преобразуется в спектральное представление и делится на ряд частотных полос. Внутри полос происходит определение и удаление маскируемых звуков, после чего каждый кадр подвергается адаптивному кодированию прямо в спектральной форме. Все эти операции позволяют значительно (в несколько раз) уменьшить объем данных при сохранении качества, приемлемого для большинства слушателей.
Каждый из описанных методов кодирования характеризуется скоростью битового потока, с которой сжатая информация должна поступать в декодер при восстановлении звукового сигнала. Декодер преобразует серию сжатых мгновенных спектров сигнала в обычную цифровую волновую форму. В любом видео или аудио потоке содержится значительное количество избыточной информации, которая независимо от ее присутствия или отсутствия не может быть воспринята человеческим ухом или глазом.
Информация в MPEG-файле записана последовательными блоками — кадрами (frames), которые последовательно считываются, а затем декодируются. Естественно, что чем больше поток, тем большее количество информации остается в файле и соответственно тем большее представление об оригинальном звуке в нем содержится. Аудиоинформация, сжатая по данной схеме, может передаваться потоком (streaming), а может храниться в файлах формата MP3 или WAV-MP3. Отличие второго от первого состоит в наличии дополнительного заголовка WAV-файла, что позволяет при наличии MP3-кодека в системе для работы с таким файлом использовать стандартные средства Windows. Основная идея, на которой основаны все методики сжатия аудио сигнала с потерями, — отказ от кодирования тонких деталей звучания оригинала, лежащих вне пределов возможностей человеческого слуха. Звуки, находящиеся на границах резких перепадов уровня: после очень громкого звука на протяжении небольшого отрезка времени около 100 мс и перед ним на протяжении 5 мс, человеческое ухо неспособно воспринимать другие, более тихие звуки. Говоря об этом, обычно имеют в виду возможности сознательного восприятия, игнорируя часто встречающийся эффект под порогового восприятия различных мелких, сравнительно тихих деталей; с их помощью, например, нередко обеспечивается эмоциональная окраска композиции. Но если при кодировании все же ограничиваться только действительно не воспринимаемыми потерями, то можно говорить о сохранении исходного качества закодированного аудио. Как известно, наиболее важную роль в передаче звукового сигнала играют вершины огибающей, в то время как переходами вблизи нулевой отметки можно пожертвовать. После такой обработки звуковая выборка без труда сжимается с помощью обычных алгоритмов кодирования LZ или Huffman. Но полученная ширина потока не yдовлетвоpила разработчиков. Ради дальнейшего уменьшения объема потока была разработана подробная психоакустическая модель возможностей человеческого слуха, и из потока стала исключаться информация о деталях звука, полностью или частично маскируемых более сильным сигналом. В данную категорию из-за низкого уровня автоматически попадает большая часть сознательно не воспринимаемого сигнала (в принципе, на высших потоках происходил аналогичный процесс, но в несравнимо меньшей степени, с сохранением практически всех существенных деталей). Кроме того, для снижения уровня потерь на низких потоках применяются особые виды техники, главный из которых – режим кодирования объединенного стерео (joint stereo). Потери при кодировании в режиме joint stereo на низких потоках (и только на них) оказываются намного ниже, чем при кодировании в режиме нормального стерео, если стереоэффект особого значения не имеет; но, к сожалению, оно же приводит к плачевным результатам в часто встречающихся случаях записей с фазовым сдвигом, созданным при записи намеренно или появившимся в процессе эксплуатации записи. Суть кодирования в соответствии с техникой joint stereo состоит в пpеобpазовании всего стереосигнала в средний сигнал между каналами и разность между ними. Но это только один вариант joint stereo, называемый MS Stereo. На особо низких потоках, таких как 96 Кбит/с, применяется техника MS/IS Stereo, в которой для некоторых частотных диапазонов вместо разницы между каналами хранится лишь информация о соотношении мощностей сигнала в разных каналах. Продукция FhG IIS так кодирует только высокие частоты, но некоторые кодеры позволяют выбрать нужный диапазон вручную. К сожалению, выбор заключается в указании нужного значения одной из маловразумительных внутренних переменных формата, не разъясняемой в документации. Окончательной версии выше упоминаемой психоакустической модели пока не существует, как нет и определенного стандартного алгоритма кодирования. В связи с этим в общем случае объем и степень ощутимости потерь определяются, с одной стороны, потоком, а с другой — особенностями конкретной разновидности психоакустической модели, использованной в каждом конкретном кодере. Последний момент имеет особенно большое значение на низких потоках. Существует набор эффектов, которые на таких потоках крайне плохо поддаются кодированию. И еще одна особенность человеческого слуха была учтена при разработке алгоритма компрессии — использование минимального порога слышимости. Наибольшей чувствительностью (2-4 дБ) органы слуха обладают в среднем диапазоне частот порядка 2-5 кГц. На других частотах порогом чувствительности может стать значение громкости звука в 40 дБ. Иными словами, звуки, лежащие за порогом чувствительности, нет смысла сохранять, поскольку они все равно не будут услышаны. На основании подобных эффектов создается так называемая психоакустическая модель, разбивающая весь частотный спектр на части, в которых уровень звука примерно одинаков, после чего удаляет звуки, не воспринимаемые человеком, как это было описано выше. Существует три уровня audio MPEG для сжатия стереофонических сигналов: · коэффициент сжатия 1:4 при допустимом потоке данных 384 Кбит/с; · 1:6 1:8 при 256 192 Кбит/с; · 1:10 1:12 при 128 112 Кбит/с. Теперь попробуем понять, какова разница между уровнями (Layers). Например, в Layer 3 части разбитого спектра намного меньше, чем в первых двух, и по этой причине сжатие этим методом является наиболее продуктивным, а коэффициент его достигает 1:12 без заметной на слух потери качества. Поэтому столь широкое распространенное получило расширение файлов MP3 (MPEG Layer 3). Для получения звука с качеством CD необходимо компрессировать аудиофайлы с потоком 256 Кбит/с, но для большинства слушателей и большинства применений вполне достаточно 128 Кбит/с (по 64 Кбит/с на канал). Однако среди великого множества кодеров MP3-файлов следует отметить немногие, позволяющие сжимать звуковой ряд с переменным потоком (variable bitrate), обеспечивая, таким образом, максимальное качество и экономя дисковое пространство. Основой таких кодеков является использование в каждый момент времени определенного значения потока и, как следствие, изменяющейся во времени природы звукового сигнала (частоты и амплитуды звуковых колебаний). Для сжатия речи с отличным качеством вполне достаточно 24 или 32 Кбит/с. Построение той самой психоакустической модели — сложный математический процесс, изобилующий вычислениями с плавающей запятой. Как следствие, подобный процесс, равно как и процесс сжатия, методом Хаффмана, требует солидной вычислительной мощности и при декодировании файлов формата MPEG, и особенно — при кодировании. Первоначально для этой цели использовались специализированные устройства, выполнявшие все математические преобразования на аппаратном уровне, и лишь в последние годы, после появления достаточно мощных процессоров, способных справляться с подобными вычислениями без особого ущерба для остальных приложений, это стало возможным и с помощью специальных программ.
2. Кодирование видео 2.1 Источник DVD Для того чтобы сделать резервную копию DVD, потребуется много времени: процесс от перезаписи DVD до создания собственного CD в зависимости от производительности компьютера может занять до одного дня. Поэтому по возможности рекомендуется перенести кодирование на ночные часы. Самой важной программой для перезаписи DVD является Smartripper. Программа декодирует отдельные сегменты DVD и записывает их на диск. Smartripper можно скачать по адресу: http://www.dvdripguides.com.
Немногие кинофильмы, записанные на DVD, можно разместить на одном-единственном CD. Приведу некоторые соображения, которые следует учитывать при планировании записи. На один CD умещается примерно 90 мин. видео в формате 4:3. В классическом широкоэкранном варианте (соотношение 16:9) на одном диске вполне сносно выглядят и 120 мин. Малоконтрастные или сравнительно темные фильмы требуют меньшей скорости передачи данных, чем, скажем, яркая и богатая контрастами Диснеевская анимация. Как правило, видео приходится делить на две части. Наиболее типичны куски продолжительностью 90 и 60 мин. Полезно, когда фильм знаком и еще до записи ясно, какая часть потребует большего диапазона полосы пропускания. Боевики к концу чаще всего прибавляют в движении, поэтому целесообразно делать вторую часть немного короче первой. В итоге получится два или более файлов с расширением VOB (Video Objects) и названием VTS_01_x, где x соответствует количеству фрагментов. Перед копированием нужно обязательно записать точную продолжительность в секундах каждого из них. Дорожку, содержащую нужный язык, необходимо записывать отдельно. Звуковые дорожки обычно называются 0х80, 0х81 и т. д. Какой язык скрывается за шестнадцатеричными числами, покажет Smartripper. После составления плана можно начинать. Вставьте DVD в дисковод и запустите Smart-ripper. Программа начнет считывать DVD. Если этого не произойдет, укажите в основ­ном окне правильный маршрут к дисководу, а затем нажмите кнопку reload. Оболочка утилиты в трех окнах будет по­казывать основную и дополнительные ви­деодорожки, а также главы и ячейки. В пер­вом окне выберите основной фильм — он обычно располагается в первой ветви дре­вовидной структуры. Там же можно подсчи­тать общую продолжительность картины. Для таких фильмов, как «Матрица», при­дется выбрать еще и правильный угол. Дело в том, что подобные фильмы часто содер­жат сцены, состоящие из нескольких пер­спектив. Обычно выбирается Angle 1. Те­перь выберите Settings. В регистре Movie произведите следующие настройки: · под Key-Check пометьте every vob-file; · под File-Splitting также активируйте every vob-file; · в Options поставьте только галочку перед Unlock-Drive; · регулятор для Search intensity передвиньте на максимум; · максимальный размер файла max-filesize не должен превышать 2048 мегабайт. Закройте Settings с помощью ОК. Теперь разделите фильм. Продумайте продолжи­тельность двух частей, как описано выше. В окне Chapters щелкни­те кнопку none — этим действием вы сотрете все галочки перед элементами опи­сания. Затем снова маркируйте отдельные главы, пока значение Total-Selection -> Length в левом нижнем окне не достигнет примерного размера первой части. Введите в Target путь для потоков. Та­ким образом, если заведен отдельный каталог для каждой части фильма, пер­вая часть будет записана в директорию MATRIX1. Впрочем, имена самих файлов должны всегда начинаться с vts_01, так как Smartripper создает несколько фраг­ментов данных, которые впоследствии автоматически пересчитываются. Теперь нажмите кнопку Start, и процедура нач­нется. Когда Smartripper закончит процесс, снова сотрите галочки в окне глав с помо­щью кнопки none и пометьте главы второй части. Настройки остаются те же, нужно лишь указать другой маршрут в Target, на­пример каталог MATRIX2. Нажмите Start. После этого исходный материал в форме VOB-файлов будет готов. В последней гла­ве обычно идут титры фильма. Ради повышения качества записи эту главу можно отбросить. 2.2 Источник VHS и TV Сейчас кассета VHS в качестве носителя — это второй сорт. Магнитная лента со време­нем теряет качество, изнашивается, да и выглядит несовременно. Сохранить любимые фильмы поможет только своевременное ко­пирование на CD. А новинки можно переписать на компьютер прямо с телевизо­ра. Я расскажу, как все это сделать. Для копирования с телевизора понадобится утилита Virtual Dub. Ее можно найти по адресу http://www.geo-cities.com/virtualdub. Дополнительно по­требуется кодек сжатия. Я рекомендую DivX 3.l для процессоров более 500 MHz или Intel Indeo 5.2 (в режиме Quick Compress) для процессоров менее 500 MHz. Прежде чем переписывать видео, придется включить и настроить еще целый ряд опций в Virtual Dub. Откройте программу, щелкни­те по меню File и выберите Capture AVI. Vir­tual Dub переключится в просмотр захвата видео и покажет выбранный в последний раз телевизионный канал — меню изменит­ся, справа появится панель статистики с ин­формацией по частоте кадров и расходу па­мяти. Для записей VHS следует выбирать сигнал Video-In. Запустите видео. В окне программы должно появиться изображение. Если этого не произошло, вполне вероятно, что выбран неверный драйвер в установках карты за­хвата. Весьма часто оборудование для за­хвата изображения использует собственные драйверы. Чтобы проверить правильность установки, вызовите меню «Video». В самом низу будет указан драйвер, отвечающий за вывод изображения. Установите драйвер вашей карты и снова запустите видео. Если нужно сохранить настройки, выбе­рите драйвер в Capture -> Settings. Доста­точно лишь отметить галочкой все пункты, начинающиеся на Save current . Перед началом записи перейдите в меню Video -> Set custom format и установите необходимое разрешение. В качестве Data Format установите 24-bit RGB. Закройте диалог и выберите Video -> Compression. В появившемся списке выберите необходимый кодек. Аналогичные операции проделайте со звуковой дорожкой: откройте Audio -> Compression, установите качество CD-Quality и подтвердите нажа­тием ОК. Перейдите в меню Capture -> Settings и поставьте галочку напротив Capture Audio. Внизу справа в окне щелк­ните по средней клавише и выберите 25 fps. Прежде чем начинать запись, включите тес­товый проход нажатием клавиши [F7]. На правой панели побежит статистика. Обрати­те внимание на Frames dropped. Если Virtual Dub теряет больше пяти кадров в минуту, измените настройки. Причиной ошибки мо­жет быть, например, слишком большой фор­мат кадра или кодек требующий большей производительности вашей системы. Если тест прошел успешно, клавишей [F6] запускайте запись. В результате видеоза­пись сохранится на жестком диске в виде AVI-файлов. Об их дальнейшей обработке говорится в следую­щей главе. 2.3 Обработка Откройте интересующую вас видеозапись с помощью Vir­tual Dub через меню File -> Open Video File. Далее выполните необходимые вам действия, которые описаны ниже. Когда закончите с настройками можете смело сохранять полученный файл File -> Save AVI.
· Изменение разрешения. Этот пример может понадобиться для преобразования DVD в DivX. Дело в том, что DVD имеет стандартное разрешение в системе PAL - 720*576. Это разрешение нельзя сохранить при небольшом битрейте и поэтому картинку придется масштабировать. Хорошим компромиссом между качеством и занимаемым объемом является разрешение 512*384. Для изменения разрешения необходимо выбрать фильтр Resize в меню Video -> Filtres -> Add. В окне Filter: resize введите разрешение горизонтали и вертикали, также в поле Filter mode можно установить фильтр убирающий эффект ступенчатости.
· Удаление черных полос (Cropping). Удаление черных полос в широкоэкранных фильмах может значительно сэкономить место на диске. Для этого в окне Video -> Filtres нажмите кнопку Cropping. В окне Filter Input Cropping введите количество пикселей для урезания по каждой из четырех сторон: левая – x1, правая – х2, верхняя – у1, нижняя – у2. · Склейка нескольких фрагментов. Этот пример может понадобиться для склейки файлов полученных с DVD. Откройте первый файл File -> Open Video File, добавьте второй файл File -> Append AVI Segment, если имеется еще несколько файлов, повторите процедуру File -> Append AVI Segment и с ними. Далее выполните любые необходимые действия, после чего сохраните полученный файл File -> Save AVI. · Подключение аудиодорожки. Этот пример также может понадобиться для копии с DVD. Выберите Audio -> WAV Audio и укажете WAV файл на вашем диске. · Компрессия звука Откройте окно Audio -> Compression, предварительно установив режим полной обработки аудио Audio -> Full processing mode. В этом окне выберите нужный кодек и его настройки. · Компрессия видео Откройте окно Video -> Compression, выберите нужный кодек, нажмите кнопку Configure, установите настройки кодека. Для кодека DivX в строке установки опорных кадров (Keyframes every … seconds) задайте значение от 5 до 10. В фильмах с быстрой сменой экспозиции рекомендуется устанавливать минимальное значение. Ползунок Compression Control требуется устанавливать в определенном соответствии с битрейтом видео (100 к 1000). Ползунок Data Rate установите в положение равное значению, полученному с помощью моей программы mpeg4 bitrate. 3. Пишем битрейт-калькулятор 3.1 Постановка задачи Для кодирования видео необходимо точно указывать битрейт аудио и видео дорожек. Начинающему кодировщику эти данные получить, конечно, неоткуда, и поэтому он пытается найти какие либо программы которые могли бы помочь ему в этом. На самом деле все гораздо проще, и вычислить битрейт видео можно с помощью простой формулы: video = (cd-time ∙ (audio ∙ 60))/time/60 ∙ 8; где video – битрейт видео; cd – размер диска в килобайтах; time – продолжительность фильма в минутах; audio – битрейт аудио в килобайтах. Битрейт аудио вычислять не надо, можно взять уже закодированную аудио дорожку из фильмов DivX 3.1, DivX 4, DivX 5 (обычно это mp3 с потоком 64-128 килобит) и не кодировать ее вообще, или же (в случае с mpeg1 или DVD) перекодировать ее в mp3 с потоком 64-128 килобит. Для того, чтобы не прогонять эту формулу в голове каждый раз, можно написать битрейт калькулятор. Это программа, которая будет считывать все необходимые для формулы, данные и, посчитав выводить результат битрейта видео. 3.2 Реализация программы Чтобы написать программу, описанную выше нам необходим гибкий и быстрый язык программирования. Таковым, как я считаю, является C++. Я буду писать свою программу на Visual C++, так как для меня он наиболее близок. Программа будет основана, на основе диалогового окна и иметь следующие элементы управления: · EditBox1 – поле ввода продолжительности видеофильма, в минутах; · EditBox2 – поле вывода битрейта видео, в килобитах; · ListBox1 – список выбора типа компакт диска; · ListBox2 – список выбора аудио кодека и его битрейта; · Button Ok – кнопка вычисляющая формулу и выводящая результат в EditBox2; · Button Close – кнопка закрывающая программу. Описание всех функций используемых в программе: · int APIENTRY WinMain() – стандартная функция Windows. · ATOM MyRegisterClass() – функция, определяющая свойства Windows приложения. Включает следующие команды: WNDCLASSEX wcex – определение класса окна; wcex.cbSize – размер класса; wcex.style – стиль окна; wcex.lpfnWndProc – название функции обработки событий; wcex.cbClsExtra – дополнительная информация окна; wcex.cbWndExtra – дополнительная информация окна; wcex.hInstance – дескриптор приложения; wcex.hIcon – загрузка большой иконки; wcex.hCursor – загрузка курсора; wcex.hbrBackground – установка цвета фона; wcex.lpszMenuName – идентификатор меню; wcex.lpszClassName – имя класса окна; wcex.hIconSm – загрузка малой иконки; RegisterClassEx - регистрация класса окна. · DialogBox() – функция создает диалоговое окно. · LRESULT CALLBACK BIT() – обработчик событий диалогового окна BIT. · SendDlgItemMessage() – функция заполняет ListBox1 и ListBox2 содержимым. · GetDlgItemInt() – функция считывает введенное в EditBox1 содержимое. · MessageBox() – функция выводит окна сообщений. · SendDlgItemMessage() – функция считывает выбранное значение ListBox1 и ListBox2. · SetDlgItemInt() – функция выводит значение video в EditBox2. · PostQuitMessage() – функция закрывает программу. Заключение В своей работе я рассмотрел широкий спектр различных аудио и видео кодеков, рассмотрел проблему самостоятельного кодирования видео с различных источников и написал программу, без которой практически немыслимо кодирование. Надеюсь, мои труды были не напрасны и моя работа, равно как и моя программа, кому-нибудь пригодится. По крайней мере, я пользуюсь своей программой с большим удовольствием. Если вам будет необходимо изменить программу, вы можете это делать, пользуясь листингом прилагаемым ниже. Bitrate Calculator может распространяться на правах AS IS ("как есть"), то есть автор не несет ответственности за моральный или материальный ущерб или упущенную выгоду, произошедшие вследствие любого использования этого программного обеспечения. Список используемой литературы 1. Бъерн Страуструп. «Язык программирования C++» 2. Герберт Шилдт. «Программирование на С и С++ для Windows95». Киев. БХВ. 1996 г. 3. А. Черносвистов. «Visual C++ 7». Санкт-Петербург. Питер. 2001 г. 4. Журнал «CHIP». 6.2001. Стр. 124-126. 5. Журнал «CHIP». 7.2001. Стр. 22-33. Приложение 1. файл BIT.cpp // Подключаем пользовательскую библиотеку #include "stdafx.h" // Подключаем библиотеку описания ресурсов #include "resource.h" // Определяем макрос #define MAX_LOADSTRING 100 // Определяем глобальные переменные HINSTANCE hInst; TCHAR szWindowClass[MAX_LOADSTRING]; HWND hWnd;
int audio,cd,time,video; ATOM MyRegisterClass(HINSTANCE hInstance); LRESULT CALLBACK BIT(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM); // Стандартная функция Windows
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; // Обрабатываем функцию определяющую класс окна MyRegisterClass(hInstance); // Отрисовываем диалоговое окно DialogBox(hInst,(LPCTSTR)IDD_BIT, hWnd,(DLGPROC)BIT); // Запускаем цикл обработки сообщений while (GetMessage(&msg, NULL, 0, 0)) { // Разрешаем использование клавиатуры TranslateMessage(&msg); // Возвращаем управление Windows DispatchMessage(&msg); } return msg.wParam; } // Функция определяющая класс окна ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BIT); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszClassName = szWindowClass; return RegisterClassEx(&wcex); } // Функция обработки событий диалогового окна LRESULT CALLBACK BIT(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { // Заполняем LISTBOX1 и LISTBOX2 case WM_INITDIALOG: SendDlgItemMessage(hDlg,IDC_LIST1, LB_ADDSTRING,0,(LPARAM)" "); SendDlgItemMessage(hDlg,IDC_LIST1, LB_ADDSTRING,0,(LPARAM)"1CD 650 Mb"); SendDlgItemMessage(hDlg,IDC_LIST1, LB_ADDSTRING,0,(LPARAM)"1CD 700 Mb"); SendDlgItemMessage(hDlg,IDC_LIST1, LB_ADDSTRING,0,(LPARAM)"1CD 800 Mb"); SendDlgItemMessage(hDlg,IDC_LIST1, LB_ADDSTRING,0,(LPARAM)"2CD 1300 Mb"); SendDlgItemMessage(hDlg,IDC_LIST1, LB_ADDSTRING,0,(LPARAM)"2CD 1400 Mb"); SendDlgItemMessage(hDlg,IDC_LIST1, LB_ADDSTRING,0,(LPARAM)"2CD 1600 Mb"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)" "); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 64kbps"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 96kbps"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 112kbps"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 128kbps"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 160kbps"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 192kbps"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 224kbps"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 256kbps"); SendDlgItemMessage(hDlg,IDC_LIST2, LB_ADDSTRING,0,(LPARAM)"mp3 320kbps"); return TRUE; break; case WM_COMMAND: // Если была нажата кнопка Ok if (LOWORD(wParam) == IDOK) { // Считываем содержимое EDITBOX1 time = GetDlgItemInt(hDlg,IDC_EDIT1,NULL,1); if(time == 0) MessageBox(hWnd,"Enter video time","Error",MB_OK); // Выбираем содержимое списка LISTBOX1 cd = SendDlgItemMessage(hDlg,IDC_LIST1,LB_GETCURSEL,0,0L); // и присваиваем необходимые значения switch (cd) { case -1: // Выводим окно Error MessageBox(hWnd,"Choice CD type","Error",MB_OK); break; case 0: // Выводим окно Error MessageBox(hWnd,"Choice CD type","Error",MB_OK); break; case 1: cd = 665600; break; case 2: cd = 716800; break; case 3: cd = 819200; break; case 4: cd = 1331200; break; case 5: cd = 1433600; break; case 6: cd = 1638400; break; } // Выбираем содержимое списка LISTBOX2 audio = SendDlgItemMessage(hDlg,IDC_LIST2,LB_GETCURSEL,0,0L); // и присваиваем необходимые значения switch (audio) { case -1: // Выводим окно Error MessageBox(hWnd,"Choice audio bitrate","Error",MB_OK); break; case 0: // Выводим окно Error MessageBox(hWnd,"Choice audio bitrate","Error",MB_OK); break; case 1: audio = 14; break; case 2: audio = 16; break; case 3: audio = 20; break; case 4: audio = 24; break; case 5: audio = 28; break; case 6: audio = 32; break; case 7: audio = 40; break; case 8: audio = 8; break; case 9: audio = 12; break; } // Если введены значения time, cd и audio if(time>0) if(cd>0) if(audio>0) // Считаем битрейт видео video = (cd-time*(audio*60))/time/60*8; // и выводим его в EDITBOX2 SetDlgItemInt(hDlg,IDC_EDIT2,video,1); } // Если была нажата кнопка Close или х if (LOWORD(wParam) == IDCANCEL || LOWORD(wParam) == IDCLOSE) { // Закрываем приложение PostQuitMessage(0); return TRUE; } } return FALSE; } Приложение 2. Файл resource.h #define IDC_MYICON 2 #define IDD_BIT_DIALOG 102 #define IDD_BIT 103 #define IDI_BIT 107 #define IDR_MAINFRAME 128 #define IDC_EDIT1 1000 #define IDC_EDIT2 1001 #define IDC_LIST2 1005 #define IDC_LIST1 1006 #define IDC_STATIC -1 #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 130 #define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_CONTROL_VALUE 1012 #define _APS_NEXT_SYMED_VALUE 110 #endif #endif Приложение 3. Файл StdAfx.h // Исключаем редко используемые элементы Windows библиотек #define WIN32_LEAN_AND_MEAN // Подключаем главную библиотеку Windows #include // Подключаем библиотеку ввода/вывода #include // Подключаем библиотеку распределения памяти #include // Подключаем библиотеку управления буфером памяти #include // Подключаем библиотеку текстовых функций #include


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Использование геоинформационных систем при проведении геологического аудита месторождений гранитов
Реферат Периферійні пристрої
Реферат Аксиологические концепции в русской философии
Реферат организация ТЭК, межзународные перевозки на авто
Реферат Рекламный образ и приемы его создания
Реферат Capital Punishment Essay Research Paper CAPITAL PUNISHMENTThe
Реферат The Music Of Generation X Essay Research
Реферат Логічні помилки, які виникають при порушенні законів логіки
Реферат Фредерик Уинслоу Тейлор
Реферат Создание базы данных "Библиотека"
Реферат Роль художественной детали в поэме Н. В. Гоголя Мертвые души
Реферат Атомные и океанские электростанции
Реферат Правовые проблемы института альтернативной гражданской службы
Реферат Привлечение в качестве обвиняемого 2
Реферат Оппозиция рока (власти звёзд) и свободной воли человека в пьесе Кальдерона "Жизнь есть сон"