Спасибо, я видел похожие примеры, все они, после адаптации, валятся вот на этом месте:
- Код: Выделить всё
-   
 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';
 
И я не понимаю чего Lazarus от меня хочет? Вот его сообщение об ошибке:
- Код: Выделить всё
- AviWriter.pas(728,23) Fatal: Syntax error, ":" expected but ";" found
 
Лазарус ругается на, то, что функции изначально объявлены вот так:
- Код: Выделить всё
- function AVIFileOpen(var ppfile: PAVIFile; szFile: PChar; uMode: UINT; lpHandler: pointer): HResult; stdcall;
 function AVIFileCreateStream(pfile: PAVIFile; var ppavi: PAVISTREAM; var psi: TAVIStreamInfo): HResult; stdcall;
 function AVIStreamSetFormat(pavi: PAVIStream; lPos: LONG; lpFormat: pointer; cbFormat: LONG): HResult; stdcall;
 function AVIStreamReadFormat(pavi: PAVIStream; lPos: LONG; lpFormat: pointer; var cbFormat: LONG): HResult; stdcall;
 function AVIStreamWrite(pavi: PAVIStream; lStart, lSamples: LONG; lpBuffer: pointer; cbBuffer: LONG; dwFlags: DWORD; var plSampWritten: LONG; var plBytesWritten: LONG): HResult; stdcall;
 function AVIStreamRelease(pavi: PAVISTREAM): ULONG; stdcall;
 function AVIFileRelease(pfile: PAVIFile): ULONG; stdcall;
 function AVIFileGetStream(pfile: PAVIFile; var ppavi: PAVISTREAM; fccType: DWORD; lParam: LONG): HResult; stdcall;
 function CreateEditableStream(var ppsEditable: PAVISTREAM; psSource: PAVISTREAM): HResult; stdcall;
 function AVISaveV(szFile: PChar; pclsidHandler: PCLSID; lpfnCallback: TAVISaveCallback;
 nStreams: integer; pavi: APAVISTREAM; lpOptions: APAVICompressOptions): HResult; stdcall;
 
А при обращении к DLL их объявили иначе.  
И Лазарусу приспичило, что нужно добавить "
: HResult". 
Но добавление "
: HResult", вначале убирает эти, но в итоге вызывает новые ошибки.
Постольку поскольку я с DLL не работаю, я не понимаю чего Лазарус от меня хочет?
С другой стороны, я нашёл какой-то код, который при обращении к avifil32.dll - не ругается. И более того, даже создаёт AVI файл! 
Но файл получается без картинок. Пустой АВИ. Поэтому я и попросил рабочий пример, ПОЖАЛУЙСТА, если у кого есть? 
DirectX не пробовал, там нужно лезть DirectShow и ещё куча настроек, без примера ОЧЕНЬ сложно. 
.