首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

视频截图解决思路

2012-12-31 
视频截图有一段mkv视频,想取的视频的时间长度,然后根据不同时间的 ,截取几张图,例如 ,每隔10分钟,从视频截

视频截图
有一段mkv视频,想取的视频的时间长度,然后根据不同时间的 ,截取几张图,
例如 ,每隔10分钟,从视频截取一张。
请教 例子或者源码
[解决办法]
簡單截圖:

function PrintWindow(SourceWindow: hwnd; Destination: hdc; nFlags: cardinal): bool; stdcall; external 'user32.dll' name 'PrintWindow'; 
function PrintWindow(SourceWindow: hwnd; Destination: hdc; nFlags: cardinal): bool; stdcall; external 'user32.dll' name 'PrintWindow';<br/>

procedure TForm1.Button2Click(Sender: TObject); 
var 
  bmp : TBitmap; 
  wnd : cardinal; 
  rec : TRect; 
begin 
  wnd := FindWindow(nil, '计算器'); // 查找窗口句柄,这里用计算器演示 
  GetWindowRect(wnd, rec); //获取到计算器窗口的举行 
  bmp := TBitmap.Create; 
  try 
    bmp.Width := rec.Right - rec.Left; 
    bmp.Height := rec.Bottom - rec.Top; 
    bmp.PixelFormat := pf24bit; 
    PrintWindow(wnd, bmp.Canvas.Handle, 0); 
    bmp.SaveToFile('cao.bmp'); 
  finally 
    bmp.Free; 
  end; 
end;


使用mediaPlay截視頻的例子; 
unit   Unit1; 

interface   

uses 

    Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms, 

    Dialogs,   MPlayer,   ExtCtrls,   StdCtrls,   Menus; 

  

type 

    TForm1   =   class(TForm) 

        MainMenu1:   TMainMenu; 

        filw1:   TMenuItem; 

        open1:   TMenuItem; 

        close1:   TMenuItem; 

        Button1:   TButton; 

        OpenDialog1:   TOpenDialog; 

        PaintBox1:   TPaintBox; 

        MediaPlayer1:   TMediaPlayer; 

        procedure   FormCreate(Sender:   TObject); 

        procedure   FormClose(Sender:   TObject;   var   Action:   TCloseAction); 

        procedure   PaintBox1Paint(Sender:   TObject); 

        procedure   open1Click(Sender:   TObject); 

        procedure   Button1Click(Sender:   TObject); 

    private 



    imgbitmap:TBitmap; 

        {   Private   declarations   } 

    public 

        {   Public   declarations   } 

    end; 

  

var 

    Form1:   TForm1; 

  

implementation 

  

{$R   *.dfm} 

  

procedure   TForm1.FormCreate(Sender:   TObject); 

begin 

      imgbitmap:=TBitmap.Create; 

      imgbitmap.Height:=200; 

      imgbitmap.Width:=200; 

      imgbitmap.Canvas.Rectangle(0,0,200,200); 

end; 

  

procedure   TForm1.FormClose(Sender:   TObject;   var   Action:   TCloseAction); 

begin 

imgbitmap.Free; 

end; 

  

procedure   TForm1.PaintBox1Paint(Sender:   TObject); 

begin 

PaintBox1.Canvas.CopyRect(Rect(0,0,200,200),imgbitmap.Canvas,Rect(0,0,200,200)); 

end; 

  

procedure   TForm1.open1Click(Sender:   TObject); 

begin 

if   OpenDialog1.Execute   then 

begin 

MediaPlayer1.FileName:=OpenDialog1.FileName; 

MediaPlayer1.Open; 

MediaPlayer1.Display:=Form1; 

MediaPlayer1.DisplayRect:=Rect(10,10,200,200); 

end; 

end; 

  

procedure   TForm1.Button1Click(Sender:   TObject); 

begin 

imgbitmap.Canvas.CopyRect(Rect(0,0,200,200),form1.Canvas,Rect(10,10,200,200)); 

PaintBox1.Invalidate; 

imgbitmap.SaveToFile( 'd:\1234567.bmp '); 

end; 

  

end. 

热点排行