![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
GAZot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.5.2009 Репутация: нет Всего: нет |
Здравствуйте Уважаемые эксперты! У меня есть avi-файл записанный в чересстрочной развёртке. Каждый кадр выводится не просто цельной картинкой, а картинкой, разбитой через каждую строку двумя полями. Такой файл предназначен для TV-вещания , способ его вывода в телевизоре называется интерлейсным (дословно "чередование") и даёт не 25, а 50 полукадров в секунду, что приводит к плавному выводу при смене изображения.
Т. к. монитор, в отличие от телевизора, выводит каждый кадр целиком, без чересстрочного вывода полей, такой способ вывода называется прогрессивным (дословно "последовательным"), мне необходимо самому средствами Delphi !!! ![]() Модуль VFW подключил, функции открытия AVI и сбора инфы о файле и потоке уже написал, помогите с кодом создания нового заголовка и потока, а главное с алгоритмом разбиения. |
|||
|
||||
x128 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 29.9.2009 Репутация: 5 Всего: 7 |
Количество кадров наоборот уменьшится в двое, интерлейсный кадр составляется из двух прогрессивных, четные поля из одного кадра и не четные из другого. Чересстрочная развертка имеет смысл только в аналоговом тв вещании. Если у тебя цель увеличить частоту кадров, то нужно использовать абсолютно другие методы. Программ и фильтров для обработки видео написано очень много и изобретать велосипед нет смысла. На compression.ru есть много полезных фильтров и ссылок на статьи по теме.
юнит для записи avi. Это сообщение отредактировал(а) x128 - 29.3.2010, 09:20 |
|||
|
||||
GAZot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.5.2009 Репутация: нет Всего: нет |
x128
Я может не понятно написал,но у меня и есть ролик с интерлейсными кадрами и мне из него нужно получить прогрессивные и именно средствами Delphi !!! ![]() Мне всего лишь нужно создать новый заголовок и поток, а главное код самого разбиения. |
|||
|
||||
x128 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 29.9.2009 Репутация: 5 Всего: 7 |
код писать за тебя не буду, другие скорее всего тоже... алгоритм довольно простой: 1) создаешь два битмапа 2) в первый копируешь четные строки, в другой не четные 3) не достающие строки интерполируешь: а) обычным дублированием (быстро и просто, но не очень красиво) б) рассчитываешь на основании соседних строк (тоже просто и картинка будет гладкой) в) рассчитываешь на основании соседних строк и соседних кадров (сложнее предыдущих, но и результат самый лучший) 4) записываешь кадры в поток. |
|||
|
||||
GAZot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 17.5.2009 Репутация: нет Всего: нет |
x128
1) создаешь два битмапа Допустим создам, 2) в первый копируешь четные строки, в другой не четные Здесь можно было бы и показать как. Дальше идёт какая то чушь, какие недостающие строки, какая интерполяция, Вы о чём. Допустим есть ролик 720 Х 576 21 один кадр, на выходе должно быть 720 х 288 42 кадра. Всё это замечательно получается в VirtualDub. 3) не достающие строки интерполируешь: а) обычным дублированием (быстро и просто, но не очень красиво) б) рассчитываешь на основании соседних строк (тоже просто и картинка будет гладкой) в) рассчитываешь на основании соседних строк и соседних кадров (сложнее предыдущих, но и результат самый лучший) 4) записываешь кадры в поток. Здесь согласен. Короче смотрю от экспертов не одного совета, а от новичков толку нет. Люди добрые помогите с кодом создания нового заголовка и потока, и покажите как переносить строки в битмап. |
|||
|
||||
x128 |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 29.9.2009 Репутация: 5 Всего: 7 |
Это элементарные вещи, даже не знаю что тут показывать...
где Source,Even,Odd это TBitmap. Source - источник, Even и Odd соответственно четный и не четный кадр с половинным разрешением по вертикали.
О том, что для сохранения оригинального разрешения нужно что-то решить с не достающими строками. Если тебя устраивает половинное разрешение по вертикали "3" пункт не нужен. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |