Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерлейс AVI, Разбить чересстрочный avi на полукадры 
:(
    Опции темы
GAZot
Дата 28.3.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.5.2009

Репутация: нет
Всего: нет



Здравствуйте Уважаемые эксперты! У меня есть avi-файл записанный в чересстрочной развёртке. Каждый кадр выводится не просто цельной картинкой, а картинкой, разбитой через каждую строку двумя полями. Такой файл предназначен для TV-вещания , способ его вывода в телевизоре называется интерлейсным (дословно "чередование") и даёт не 25, а 50 полукадров в секунду, что приводит к плавному выводу при смене изображения. 
Т. к. монитор, в отличие от телевизора, выводит каждый кадр целиком, без чересстрочного вывода полей, такой способ вывода называется прогрессивным (дословно "последовательным"), мне необходимо самому средствами Delphi !!!  smile сделать интерлейс. Т.е перезаписать исходный avi-файл содержащий полные кадры, в avi-файл, содержащий полукадры, соответственно количество новых кадров возрастёт в 2 раза (1-ый кадр нового кадра содержит нечётные строки полного кадра, 2-ой - чётные).
Модуль VFW подключил, функции открытия AVI и сбора инфы о файле и потоке уже написал, помогите с кодом создания нового заголовка и потока, а главное с алгоритмом разбиения.
PM MAIL   Вверх
x128
Дата 29.3.2010, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 29.9.2009

Репутация: 5
Всего: 7



Цитата(GAZot @  28.3.2010,  11:57 Найти цитируемый пост)
...Т.е перезаписать исходный avi-файл содержащий полные кадры, в avi-файл, содержащий полукадры, соответственно количество новых кадров возрастёт в 2 раза (1-ый кадр нового кадра содержит нечётные строки полного кадра, 2-ой - чётные)...

Количество кадров наоборот уменьшится в двое, интерлейсный кадр составляется из двух прогрессивных, четные поля из одного кадра и не четные из другого. Чересстрочная развертка имеет смысл только в аналоговом тв вещании. Если у тебя цель увеличить частоту кадров, то нужно использовать абсолютно другие методы. Программ и фильтров для обработки видео написано очень много и изобретать велосипед нет смысла. На compression.ru есть много полезных фильтров и ссылок на статьи по теме.

Цитата(GAZot @  28.3.2010,  11:57 Найти цитируемый пост)
...Модуль VFW подключил, функции открытия AVI и сбора инфы о файле и потоке уже написал, помогите с кодом создания нового заголовка и потока...

юнит для записи avi.

Это сообщение отредактировал(а) x128 - 29.3.2010, 09:20
PM MAIL WWW   Вверх
GAZot
Дата 30.3.2010, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.5.2009

Репутация: нет
Всего: нет



x128
 Я может не понятно написал,но у меня и есть ролик с  интерлейсными кадрами и мне из него нужно получить прогрессивные и именно средствами Delphi !!!   smile 
Мне всего лишь нужно  создать новый заголовок и поток, а главное код самого разбиения.
PM MAIL   Вверх
x128
Дата 31.3.2010, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 29.9.2009

Репутация: 5
Всего: 7



Цитата(GAZot @  30.3.2010,  09:50 Найти цитируемый пост)
Мне всего лишь нужно  создать новый заголовок и поток, а главное код самого разбиения. 

код писать за тебя не буду, другие скорее всего тоже... 
алгоритм довольно простой:
1) создаешь два битмапа
2) в первый копируешь четные строки, в другой не четные
3) не достающие строки интерполируешь:
  а) обычным дублированием (быстро и просто, но не очень красиво)
  б) рассчитываешь на основании соседних строк (тоже просто и картинка будет гладкой)
  в) рассчитываешь на основании соседних строк и соседних кадров (сложнее предыдущих, но и результат самый лучший) 
4) записываешь кадры в поток.

PM MAIL WWW   Вверх
GAZot
Дата 1.4.2010, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.5.2009

Репутация: нет
Всего: нет



x128

1) создаешь два битмапа 

Допустим создам,

2) в первый копируешь четные строки, в другой не четные

Здесь можно было бы и показать как.

Дальше идёт какая то чушь, какие недостающие строки, какая интерполяция, Вы о чём. Допустим есть ролик 720 Х 576 21 один кадр, на выходе должно быть 
720 х 288 42 кадра. Всё это замечательно получается в VirtualDub.

3) не достающие строки интерполируешь:
  а) обычным дублированием (быстро и просто, но не очень красиво)
  б) рассчитываешь на основании соседних строк (тоже просто и картинка будет гладкой)
  в) рассчитываешь на основании соседних строк и соседних кадров (сложнее предыдущих, но и результат самый лучший)

4) записываешь кадры в поток.

Здесь согласен.

Короче смотрю от экспертов не одного совета, а от новичков толку нет. Люди добрые помогите с кодом создания нового заголовка и потока, и покажите как переносить строки в битмап.
PM MAIL   Вверх
x128
Дата 2.4.2010, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 29.9.2009

Репутация: 5
Всего: 7



Цитата(GAZot @  1.4.2010,  17:35 Найти цитируемый пост)
Здесь можно было бы и показать как.

Это элементарные вещи, даже не знаю что тут показывать...
Код

  for i:=0 to Source.Height-1 do
    if i and 1=0 then CopyMemory(Even.ScanLine[i shr 1], Source.ScanLine[i], Source.Width*3)
    else CopyMemory(Odd.ScanLine[i shr 1], Source.ScanLine[i], Source.Width*3);

где Source,Even,Odd это TBitmap. Source - источник, Even и Odd соответственно четный и не четный кадр с половинным разрешением по вертикали.
Цитата(GAZot @  1.4.2010,  17:35 Найти цитируемый пост)
Дальше идёт какая то чушь, какие недостающие строки, какая интерполяция, Вы о чём.

О том, что для сохранения оригинального разрешения нужно что-то решить с не достающими строками. Если тебя устраивает половинное разрешение по вертикали "3" пункт не нужен.


PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.