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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как программно разложить AVI на картинки и обратно, ?????????? 
:(
    Опции темы
Albinos_x
Дата 8.12.2004, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Как программно разложить AVI файл на картинки и потом собрать его обратно???

smile Заранее благодарю за помощь!!!! smile


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Camelot
Дата 11.12.2004, 04:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да.. вопрос то глобальный.. интересный очень... наверное как то с использованием функций библиотек кодеком.. типа divX.dll или чё нить на подобии... хз.. но очень интересно... smile
  Вверх
Snowy
Дата 14.12.2004, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



На Torry есть компонент TAviWriter (AviWrite.zip)
Из TBitMap'ов собирает AVI и добавляет звуковую дорожку.
Использует стандартную библиотеку avifil32.dll.
Код

 procedure AVIFileInit; stdcall; external 'avifil32.dll' name 'AVIFileInit';
 procedure AVIFileExit; stdcall; external 'avifil32.dll' name 'AVIFileExit';
 function AVIFileOpen; external 'avifil32.dll' name 'AVIFileOpenA';
 function AVIFileCreateStream; external 'avifil32.dll' name 'AVIFileCreateStreamA';
 function AVIStreamSetFormat; external 'avifil32.dll' name 'AVIStreamSetFormat';
 function AVIStreamReadFormat; external 'avifil32.dll' name 'AVIStreamReadFormat';
 function AVIStreamWrite; external 'avifil32.dll' name 'AVIStreamWrite';
 function AVIStreamRelease; external 'avifil32.dll' name 'AVIStreamRelease';
 function AVIFileRelease; external 'avifil32.dll' name 'AVIFileRelease';
 function AVIFileGetStream; external 'avifil32.dll' name 'AVIFileGetStream';
 function CreateEditableStream; external 'avifil32.dll' name 'CreateEditableStream';
 function AVISaveV; external 'avifil32.dll' name 'AVISaveV';

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


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



А если, без компонента?

Использовать приведённые функции...
Где можно найти описание этих функций?


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
bear
Дата 15.12.2004, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 Держи функцию разкладывае ави на фреймы
Код

uses vfw;
function ExtractFrames(avifn: string; ToFileName: TFileName) : Boolean;
var   Error: Integer;  
pFile: PAVIFile;   
AVIStream: PAVIStream;   
gapgf: PGETFRAME;   
lpbi: PBITMAPINFOHEADER;   
bits: PChar; hBmp: HBITMAP; 
AviInfo: TAVIFILEINFOW; 
sError: string; TmpBmp: TBitmap; 
DC_Handle: HDC; fr1, fr2, fr : integer; 
s : string;
begin 
Result := False; AVIFileInit; 
Error := AVIFileOpen(pFile, PChar(avifn), 0, nil);
 if Error <> 0 then begin   AVIFileExit;   
case Error of     
AVIERR_BADFORMAT: sError := 'The file couldnot be read';     
AVIERR_MEMORY: sError := 'The file could not be opened because of insufficient memory.';       
AVIERR_FILEREAD: sError := 'A disk error occurred while reading the file.';       
AVIERR_FILEOPEN: sError := 'A disk error occurred while opening the file.';   
end;     
ShowMessage(sError);   Exit;   
end; 
if AVIFileInfo(pFile, @AVIINFO, SizeOf(AVIINFO)) <> AVIERR_OK then 
begin   AVIFileRelease(pFile);   AVIFileExit;   Exit; end; 
Error := AVIFileGetStream(pFile, AVIStream, streamtypeVIDEO, 0); 
if Error <> AVIERR_OK then begin   AVIFileRelease(pFile);   
AVIFileExit;   Exit; end; 
gapgf := AVIStreamGetFrameOpen(AVIStream, nil); 
if gapgf = nil then begin   AVIStreamRelease(AVIStream);  
AVIFileRelease(pFile);   
AVIFileExit;   Exit; end; 
fr1 := AVIStreamStart(AVIStream); 
fr2 := AVIStreamEnd(AVIStream); 
for fr := fr1 to fr2 do begin   
lpbi := AVIStreamGetFrame(gapgf, fr);   
if lpbi = nil then   begin     AVIStreamGetFrameClose(gapgf);     
AVIStreamRelease(AVIStream);     AVIFileRelease(pFile);     
AVIFileExit;     Exit;   end;   
TmpBmp := TBitmap.Create;   
try TmpBmp.Height := lpbi.biHeight;     
TmpBmp.Width  := lpbi.biWidth;     
bits := Pointer(Integer(lpbi) + SizeOf(TBITMAPINFOHEADER));     
DC_Handle := CreateDC('Display', nil, nil, nil);     
try       hBmp := CreateDIBitmap(DC_Handle,       lpbi^,       CBM_INIT,       bits,       PBITMAPINFO(lpbi)^,       DIB_RGB_COLORS);    
 finally       
DeleteDC(DC_Handle);     end;     
TmpBmp.Handle := hBmp;    
 try       s := IntToStr(fr);      
 while Length(s)<6 do s := '0'+s;       TmpBmp.SaveToFile(ToFileName + s + '.bmp');
Result := True;     except     end;   
finally     TmpBmp.Free;   end; 
end; AVIStreamGetFrameClose(gapgf); 
AVIStreamRelease(AVIStream); 
AVIFileRelease(pfile); AVIFileExit;
end; 


Это сообщение отредактировал(а) Alexeis - 23.8.2007, 15:05
PM MAIL   Вверх
Albinos_x
Дата 15.12.2004, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Можно по-подробней.
указанного uses vfw у меня нет (может я не так чё делаю);
При попытке использовать библиотеку avifil32.dll Делфя тоже выдаёт ошибку...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 15.12.2004, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



avifil32.dll есть в WinXP. В 9x не гарантирую... Проверь наличие этого файла в %WINDIR%\System(32)
Вот, посмотри линк:
http://softs.h10.ru/literature.shtml?topic...ok=1&page=6.htm
Заодно и проблема мац решится.
PM MAIL   Вверх
Albinos_x
Дата 15.12.2004, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата
Проверь наличие этого файла в %WINDIR%\System(32)


там-то есть.
Ссылочка тоже очень полезная, но там опять же ссылаются на модуль vfw, которого у меня нет. Может подскажешь где его можно скачать? (Или хотя бы текст этого модуля)


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 16.12.2004, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Я спросил у Яндекса....
Вобщем что такое vfw.pas
vfw.h - это заголовочный файл из комплекта DirectX SDK для работы с avifil32.dll.
vfw.pas соответственно конвертированая версия для Delphi.
Если найдешь SDK, получишь vfw.h, а его можешь конвертировать с помощью утилитки конвертирования заголовочных файлов.
Вот пара ссылок, где можно взять vfw.pas
ftp://delphi-jedi.org/api/vfw.zip
http://www.vr-online.ru/download.php?det=20
PM MAIL   Вверх
Albinos_x
Дата 16.12.2004, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Спасибо! Нашёл!...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Mirlen
Дата 16.8.2007, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



обе ссылки на vfw.pas ,битые.
помогите найте этот модуль
PM MAIL   Вверх
Snowy
Дата 16.8.2007, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



PM MAIL   Вверх
Mirlen
Дата 18.8.2007, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



при выполнении кода, предложенного bear, перед послденим end'ом вылетает ошибка EAccessViolation.
все функции библиотек работают хорошо. не знаю в чем дело.

в ходе работы программы все кадры сохраняются нормально, покуда не доходит дело до завершения.

Это сообщение отредактировал(а) Mirlen - 18.8.2007, 01:27
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

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


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

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


 




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


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

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