如何截取VCD画面?(200分)

  • 主题发起人 主题发起人 huangpq
  • 开始时间 开始时间
H

huangpq

Unregistered / Unconfirmed
GUEST, unregistred user!
急需将播放的VCD连续存放为BMP
试过用mediaplayer播放,用image.copyrect()但是不行!
 
可以用专用的软件来截取.
 
看看我写的这篇文章:

电影屏幕画面捕捉的实现

多媒体播放程序中大都有画面捕捉功能,利用Delphi的Copyrect函数同样可以实
现此功能。Copyrect函数的用法是:
procedure CopyRect(Dest: TRect;
Canvas: TCanvas;
Source: TRect);
下面为例子:

Unit Unit1;

Interface

Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, MPlayer, StdCtrls;

Type
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
Image1: TImage;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;



var
Form1: TForm1;

Implementation

{$R *.DFM}


procedure TForm1.FormCreate(Sender: TObject);
begin

mediaplayer1.display:=form1;
mediaplayer1.DisplayRect:=rect(0,0,100,100);
//定义mediaplayer1的播放区域
end;



procedure TForm1.Button1Click(Sender: TObject);
begin

image1.Canvas.CopyRect(image1.ClientRect,form1.canvas,rect(0,0,100,100));
//实现屏幕捕捉,将Form1上的图形拷贝到Image1的画布上
end;



end.





 
连续捕捉时放个定时器就行了。
把捕捉过程放在timer1.ontimer中
 
vcd文件的每一帧的长度一样,你自己可以研究一下*.dat文件长度,
就可以发现其规律,也可以得到每帧大小,然后自己编程直接从dat文件中
拷出来,存成新的dat文件(注意带文件头),每秒25帧。
 
www
我早试过image.copyrect,但是Copy的一团漆黑(这是一本Delphi书
上的例程,不知作者是否编译过)
我想用MCI的capture做,但不知从何入手,望大家赐教!

 
Hexi
我要将Vcd存为BMP,.dat文件中不会存的全是位图吧!
 
.dat文件是mpeg2压缩过的,怎么会是位图呢。
最近几天好象在<a href="http://210.34.48.55/" target="_blank">“飞扬的梦”</a>中有一个软件可以截取video,可存为多种格式,你去看看吧。
 
我上次豪杰的站点好像看到有金山影霸2的源码下载
 
超级解霸不是有此功能吗,并且支持各种频率.
 
用M$ 的 Direct Show SDK!
 
看看超级解霸2.0的源码(http://www.gbsource.net/delphi/code.asp?id=52)
,应该有帮助。
 
wsprintf(
cmd,
"capture %s as %s notify",
device, //device 是打开的Mci设备
"d:/temp/1.bmp"
);

mciSendString(cmd,NULL,0,NULL);
VC里面的写法,不知道Delphi该怎么写。
wsprintf是字符窜的格式化命令,就是构造出cmd这个字符窜。
 
主人不发言我就要结束了
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
925
DelphiTeacher的专栏
D
D
回复
0
查看
880
DelphiTeacher的专栏
D
D
回复
0
查看
852
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
886
DelphiTeacher的专栏
D
后退
顶部