ta : TVIDEO_DATA;
OutActSize : d
word;
i : integer;
begin
OutActSize := BmpInInfo.bmiHeader.biSizeImage;
Buf := ICSeqCompressFrame(@CapVar,0,lpVHdr.lpData,@bKeyFrame,@OutActSize);
//在这里, OutActSize代表压缩后的视频数据大小
// form1.Label3.Caption := 'Compressed size:'+inttostr(OutActSize);
//我用的是UDP方式, 因为UDP数据包大小限制, 所以我控制了数据大小, 超出的数据会发生丢帧
if (OutActSize <= sizeof(videodata.Buf) ) then
begin
zeromemory(@VideoData ,sizeof(TVIDEO_DATA));
//记录是否为关键帧
VideoData.bKeyFrame:=bKeyFrame;
copymemory(@VideoData.Buf, Buf, OutActSize);
VideoData.SampleNum:=SampleNum; //我们可以记录下帧数, 可以做扩展用
VideoData.BufSize:=OutActSize; //记录数据大小, 传输时用
//在这里, 你可以用你喜欢的网络方式传输视频数据,
//cc1.SendBuffer(VideoData,sizeof(TVIDEO_DATA)-SendBufferSize+Outactsize);
inc(SampleNum);
end;
result := 0;
end;
其中,PVIDEOHDR类型可以从VFW中看到其定义:
TVIDEOHDR = record
lpData : PBYTE; // 视频数据buffer
dwBufferLength : DWORD; // 数据buffer长度
dwBytesUsed : DWORD;
dwTimeCaptured : DWORD; // 时间长度(毫秒)
dwUser : DWORD;
dwFlags : DW