Форум: "Media";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизГде компонент TMediaPlayer хранит данные? Найти похожие ветки
← →
NikNet © (2005-10-07 18:33) [0]Которые он воспройзводит? Хочу сделать FFT?
← →
vrem (2005-10-07 18:36) [1]ах FFT, автор попробуй ещё раз вопрос задать :)
← →
Дмитрий Белькевич (2005-10-08 04:55) [2]Афтар выпей йаду ;)
← →
PAVIA © (2005-10-08 19:57) [3]Данные он хранит в памяти. А если по существу используй
vfw(vide for windows)
Тут небольшая загатовка.unit Unit1;
interface
uses
vfw....;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
OpenDialog1: TOpenDialog;
Timer1: TTimer;
procedure load1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure Scan(dsfmt:PBITMAPINFOHEADER;dsdata:pointer);
var
Form1: TForm1;
avistream:Pavistream;
fmtlen:integer;
HICV:hic;
srcfmt,dstfmt:PBITMAPINFOHEADER;
streaminfo:Tavistreaminfo;
dstdata,srcdata:pointer;
Frame:integer;
l1,l2:integer;
paus:boolean;
a:array of single;
implementation
{$R *.DFM}
procedure TForm1.load1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
if avistream<>nil then
begin
AVIStreamRelease(avistream);
avistream:=nil;
end;
AVIStreamOpenFromFile( avistream,Pchar(OpenDialog1.Filename),
streamtypeVIDEO, 0, OF_READ or OF_SHARE_EXCLUSIVE, 0 );
AVIStreamInfo( avistream, streaminfo, sizeof(streaminfo) );
AVIStreamFormatSize(avistream, 1, @fmtlen);
getmem(srcfmt,fmtlen);
AVIStreamReadFormat( avistream, 1, srcfmt, @fmtlen );
if HICV<>0 then
begin
ICDecompressEnd(HICV);
ICclose(HICV);Hicv:=0;
end;
HICV:=ICDecompressOpen( ICTYPE_VIDEO, streaminfo.fccHandler,srcfmt,nil );
fmtlen:=ICDecompressGetFormatSize(HICV, srcfmt);
getmem(dstfmt,fmtlen);
ICDecompressGetFormat(HICV, srcfmt, dstfmt);
getmem(dstdata,dstfmt.biSizeImage);
ICDecompressBegin(HICV, srcfmt, dstfmt);
Frame:=streaminfo.dwStart;
paus:=false;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AVIFileInit();
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HICV<>0 then
begin
ICclose(HICV);Hicv:=0;
end;
if avistream<>nil then
begin
AVIStreamRelease( avistream ); avistream:=nil;
end;
AVIFileExit();
end;
procedure Scan(dsfmt:PBITMAPINFOHEADER;dsdata:pointer);
var
i,j:integer;
yarkost:single;
R,G,B:byte;
begin
i:=0;
while i<(dsfmt.biWidth*dsfmt.biHeight)*3 do
begin
// Byte(PChar(dsdata)[i+0]):=0;
Byte(PChar(dsdata)[i+1]):=0;
Byte(PChar(dsdata)[i+2]):=0;
// yarkost:=0.63*R+0.4*G+0.3*B;
inc(i,3);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
dc:Hdc;
prect:TRect;
DDib:HDRAWDIB;
begin
if (hicv<>0) then
begin
if srcdata<>nil then begin FreeMem(srcdata);
srcdata:=nil; end;
avistreamread(avistream,Frame,1,nil,0,@l1,@l2);
getmem(srcdata,streaminfo.dwSuggestedBufferSize);
avistreamread(avistream,Frame,1,srcdata,streaminfo.dwSuggestedBufferSize,@l1,@l2);
ICDecompress( HICV, 0, srcfmt, srcdata, dstfmt, dstdata);
Scan(dstfmt,dstdata);
dc:=getdc(Panel1.Handle);
prect:=Panel1.ClientRect;
DDib:=DrawDibOpen;
DrawDibDraw(DDib,dc,pRect.left,pRect.top,pRect.right,pRect.bottom,dstfmt,dstdata,0,0,-1,-1,0);
DrawDibClose(DDib);
ReleaseDC(Panel1.Handle,dc);
if (not paus) then inc(Frame);
if Frame=streaminfo.dwStart+streaminfo.dwLength then
begin Frame:=streaminfo.dwStart;
paus:=true;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
load1Click(Self);
end;
end.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c