都来帮帮我吧!急用啊~这个视频回调函数是否有错? (100分)

  • 主题发起人 主题发起人 yxgszm
  • 开始时间 开始时间
Y

yxgszm

Unregistered / Unconfirmed
GUEST, unregistred user!
我做一个摄像头视频采集程序,现在一切都妥当,就是在回调函数中将帧转换为流数据时要出问题,有关程序如下,麻烦各位帮我看一下,现在正等着急用这段代码,望大家帮我尽快揭开疑团,十分感谢!
[:(] TSendBuf = record
Size : Integer;
data : array[0..930000] of Byte;
end;

procedure Framecallbackproc(hWnd:HWND;
lpVHdr:Longint);
stdcall;
var
DataPoint : ^byte;
DibLen,i : integer;
VideoStr : PLPVIDEOHDR;
SendBuf : TSendBuf;
fs : TFileStream;
begin

//定义一个文件流
fs := TFileStream.Create('c:/test.bmp', fmCreate);
//转换从回调函数中得到的指针
VideoStr:=PLPVIDEOHDR(lpVHdr);
//得到返回的数据大小
DibLen:= VideoStr^.dwBufferLength;
GetMem(DataPoint,DibLen);
//将帧数据COPY到一个内存中
CopyMemory(DataPoint,VideoStr^.lpData,Diblen);
//将内存中数据写入通讯结构体,结构体中包含数据和长度
for i:= 1 to DibLendo

begin

SendBuf.data := DataPoint^;
Inc(DataPoint);
end;

SendBuf.Size := DibLen;
fs.WriteBuffer(SendBuf.Data, SendBuf.Size);//数据写入文件流
fs.Free;
end;


该回调函数执行后,不能预览C:/TEST.BMP图象,为什么呢?是不是数据采集有错?
注:回调函数执行后SendBuffer里有数据
 
不能看图象的话也许是因为这个图象格式有误,可能是数据采集的问题吧

 
但是摄像头采集的帧不是BMP格式数据流吗,把它保存为BMP怎么会有错呢?谢谢
 
yxgszm
我估计应该能帮你解决这个问题,虽然我是个菜鸟[:)]。
我的邮箱是:wufeialber@163.com
要看图像的话,还要一个图像信息的数据(TBitmapInfo的数据)
 
等了好久才等到知音啊~~~
TO helloalber:
TBitmapInfoHeader、和TBitmapInfo我都了解过,但知道得很少,你的意思是说
我现在采集到的只是视频数据块的头信息(TBitmapInfoHeader)?那TBitmapInfo怎么得到呢?得到后怎样将其“组合”回显呢?望不吝赐教!我已经把你的mail记下来了,我的mail是jiao@ewai.net,QQ:19442096 大家多多探讨,我最近在做视频会议,这个问题困绕我很久了,昨天想到了一个不是办法的办法,用BitBlt截屏压缩传输,这只能治标不能治本,我很希望得到你的帮助,获得治本妙法!谢谢!
 
我在你的另外开的帖子给你回答了
这个就不重贴了[:)]
 
自己搞定了!
 
后退
顶部