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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Склеивание avi-файлов, как склеить два и более avi-файла в один 
:(
    Опции темы
GAZot
Дата 17.5.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте Уважаемые эксперты! Обращаюсь уже в 3 форум  smile в надежде получить ответ на свой вопрос желательно с примером,а не на пальцах.Мне нужно в своём проекте склеивать один или более avi-файлов в один.Я так думаю тут надо использовать модули VFW или DirectShow,но опять же повторяю нужен пример. smile 
PM MAIL   Вверх
Keeper89
Дата 17.5.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



Посмотрите для начала компоненты здесь, там есть и примеры работы с AVI.

Добавлено @ 21:50
Плюс посмотрите вот эту статью по работе с AVI.


Это сообщение отредактировал(а) Keeper89 - 17.5.2009, 21:52


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


Новичок



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

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



Keeper89 
Это всё не то.Мне не нужны сторонние компоненты,тем более платные.Я же написал что нужно использовать модули VFW или DirectShow.
PM MAIL   Вверх
Alexeis
Дата 19.5.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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





--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
GAZot
Дата 19.5.2009, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Alexeis 
Спасибо,но тут bmp+bmp=avi,а мне нужно avi+avi=avi.Может для Вас это примерно одно и тоже,но я не понимаю как мне этот пример сможет помочь.Может набросаете что нибудь с пояснениями,особенно меня интересует как заново создавать заголовок файла(т.е инфо об файле.
PM MAIL   Вверх
Alexeis
Дата 19.5.2009, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(GAZot @  19.5.2009,  17:50 Найти цитируемый пост)
Спасибо,но тут bmp+bmp=avi,а мне нужно avi+avi=avi.Может для Вас это примерно одно и тоже,но я не понимаю как мне этот пример сможет помочь.


Рассмотрим код 
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Ops  : TAVIFileOptions;
  Cmpr : TAVICompressor;
  bmp  : TBitMap;
  i    : Integer;
  fh   : TMemoryStream;
begin
  bmp := TBitMap.Create;
  bmp.LoadFromFile('H:\temp\Frame0001.bmp'); //первый кадр
  Ops.Init;
  Ops.Width     := bmp.Width;
  Ops.Height    := bmp.Height;
  Ops.FrameRate := 25; //число кадров в сек
  Ops.ShowDialog:= false;
  Ops.KeyFrameEvery := Ops.FrameRate;
  Ops.BytesPerSecond:= 400 * 1024; //400 кб/с битрейт
  Cmpr := TAVICompressor.Create;
  Cmpr.Open('H:\temp\1.avi', Ops);
  fh   := TMemoryStream.Create;
  for I := 1 to 627
  do
    Begin
      fh.LoadFromFile(Format('%s%.4d%s', ['H:\temp\Frame', i, '.bmp']));
    //  bmp.LoadFromFile(Format('%s%.4d%s', ['H:\temp\Frame', i, '.bmp']));
      Cmpr.WriteFrame(PBitmapInfo(Pointer(Integer(fh.Memory) + sizeof(BitmapFileHeader)))); //читаем битмап напрямую, так быстрее
      memo1.Lines.Add(Format('%s%.4d%s', ['H:\temp\Frame', i, '.bmp']));
      Application.ProcessMessages;
    End;
  fh.Free;
  Cmpr.Close;
  Cmpr.Free;
  bmp.Free;
end;


Класс 
Ops  : TAVIFileOptions; - определяет заголовок AVI.
Класс
Cmpr : TAVICompressor; - работает с кадрами и сжимает их
Класс TAVICompressor принимает в качестве кадров битмапы с заголовками Infoheader
Cmpr.WriteFrame() - запишет очередной кадр в поток.
Получается что нужно создать новый AVI и добавить в него кадры из обоих AVI или же открыть первый и добавить в него кадры из второго (не уверен получиться ли).

Так работает алгоритм если требуется пересжатие, если форматы одинаковы, то нужно делать как-то по другому.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

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

Запрещено:

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

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

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

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


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

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


 




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


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

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