Кодирование видеоинформацииРефераты >> Программирование и компьютеры >> Кодирование видеоинформации
· Изменение разрешения.
Этот пример может понадобиться для преобразования 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;