现正在编写MPEG-2素材入库程序,
不知如何获取MPEG-2文件第一帧的图象并保存或使用.
请各位大虾帮帮忙!
不知如何获取MPEG-2文件第一帧的图象并保存或使用.
请各位大虾帮帮忙!
解决方案 »
- 关于MP3文件信息的获取
- 高兴, 上月终于进入 Delphi Top 20强, 散分而后快!
- 请教关于listview的几个问题?〉???
- oracle8.x +delphi5 图片存取问题(高手请进)
- 哪里有大富翁离線BBS(delphibbs.chm文件)下載?怎麼從WWW.DELPHIBBS.COM上下載281M的大富翁离線BBS不能使用!!!
- 高手请进,确实是MIDAS 中最难的问题。如何在应用服务器端 强制关掉应用服务器?
- 我在DELPHI 6中还会出现这个问题,不知道大家还有没有?///
- 为什么在表日期里..?
- ***** 请教如何改变 DBGrid中某一列的值?*****
- 怎样判断一个字符串是否在另一个字符串中
- AdvStringGrid升级的问题?
- 调用C++ DLL里的函数,其中有个输出的变量定义为char **Pout.在delphi 中应该用什么类型与之对应啊:(
SampleGrabber: ISampleGrabber;procedure TMainForm.OpenFile(const FileName: string);
var
PFileName: array [0..255] of WideChar;
Filter: IBaseFilter;
MediaType: TAM_MEDIA_TYPE;
begin
CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, GraphBuilder); CoCreateInstance(CLSID_SampleGrabber, nil, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, Filter);
Filter.QueryInterface(IID_ISampleGrabber, SampleGrabber);
GraphBuilder.AddFilter(Filter, 'Grabber');
Filter:=nil;
ZeroMemory(@MediaType, SizeOf(TAM_MEDIA_TYPE));
MediaType.majortype:=MEDIATYPE_Video;
MediaType.subtype:=MEDIASUBTYPE_RGB24;
MediaType.formattype:=FORMAT_VideoInfo;
SampleGrabber.SetMediaType(MediaType);
SampleGrabber.SetBufferSamples(True); StringToWideChar(FileName, PFileName, 255);
GraphBuilder.RenderFile(PFileName, nil); GraphBuilder.QueryInterface(IID_IVideoWindow, VideoWindow);
VideoWindow.put_Owner(DisplayPanel.Handle);
VideoWindow.put_WindowStyle(WS_CHILD or WS_CLIPSIBLINGS);
VideoWindow.put_Visible(True);
DisplayPanelResize(nil); GraphBuilder.QueryInterface(IID_IMediaSeeking, MediaSeek);
MediaSeek.SetTimeFormat(Time_Format_Frame); GraphBuilder.QueryInterface(IID_IMediaControl, MediaControl); GraphBuilder.QueryInterface(IID_IMediaEventEx, MediaEvent);
MediaEvent.SetNotifyWindow(Handle, WM_GraphNotify, 0);
end;
procedure TMainForm.SpeedButton7Click(Sender: TObject);
var
MediaType: TAM_MEDIA_TYPE;
VideoInfoHeader: TVideoInfoHeader;
BitmapInfo: TBitmapInfo;
Bitmap: HBitmap;
Buffer: Pointer;
BufferSize: Integer;
begin
SampleGrabber.GetConnectedMediaType(MediaType); ZeroMemory(@VideoInfoHeader, SizeOf(TVideoInfoHeader));
CopyMemory(@VideoInfoHeader, MediaType.pbFormat, SizeOf(VideoInfoHeader)); ZeroMemory(@BitmapInfo, SizeOf(TBitmapInfo));
CopyMemory(@BitmapInfo, @VideoInfoHeader.bmiHeader, SizeOf(VideoInfoHeader.bmiHeader)); Bitmap:=CreateDIBSection(0, BitmapInfo, DIB_RGB_COLORS, Buffer, 0, 0);
SampleGrabber.GetCurrentBuffer(BufferSize, Buffer); Image1.Picture.Bitmap.Handle:=Bitmap
end;