亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? u_main.pas

?? 一個利用DSPack開發的視頻軟件
?? PAS
字號:
{
    MTPlay V1.0 Write by ZHONG WAN at 2003.11

      -'`"_         -'`" \
     /     \       /      "
    /     /\\__   /  ___   \
   |      | \  -"`.-(   \   |
   |      |  |     | \"  |  |      萬重
   |     /  /  "-"  \  \    |
    \___/  /  (o o)  \  (__/       電郵(email):
         __| _     _ |__           mantousoft@163.com
        (      ( )      )
         \_\.-.___.-./_/           網址(homepage):
           __  | |  __             http://www.delphibox.com
          |  \.| |./  |
          | '#.   .#' |            OICQ: 163932
          |__/ '"" \__|
        -/             \-          2003.11

}

unit U_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, Menus, ImgList, DSPack, DSUtil, DirectShow9, ToolWin, ActnList,
  jpeg;

type
  Tfrm_Main = class(TForm)
    VideoWindow1: TVideoWindow;
    ImageList: TImageList;
    Timer1: TTimer;
    SaveDialog1: TSaveDialog;
    PopupMenu1: TPopupMenu;
    Play1: TMenuItem;
    Stop1: TMenuItem;
    N1: TMenuItem;
    Capture1: TMenuItem;
    Bitmap1: TMenuItem;
    N2: TMenuItem;
    FullScreen1: TMenuItem;
    OnTop1: TMenuItem;
    N3: TMenuItem;
    Close1: TMenuItem;
    Panel1: TPanel;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Play2: TMenuItem;
    ActionList1: TActionList;
    A_Option: TAction;
    A_Play: TAction;
    A_Stop: TAction;
    P1: TMenuItem;
    S1: TMenuItem;
    StatusBar1: TStatusBar;
    A_Capture: TAction;
    A_OnTop: TAction;
    A_FullScreen: TAction;
    A_Bitmap: TAction;
    N4: TMenuItem;
    C1: TMenuItem;
    B1: TMenuItem;
    N5: TMenuItem;
    F1: TMenuItem;
    T1: TMenuItem;
    A_Exit: TAction;
    O1: TMenuItem;
    N6: TMenuItem;
    X1: TMenuItem;
    SampleGrabber1: TSampleGrabber;
    SaveDialog2: TSaveDialog;
    OpenDialog1: TOpenDialog;
    A_File: TAction;
    E1: TMenuItem;
    N7: TMenuItem;
    E2: TMenuItem;
    Image1: TImage;
    ASFWriter1: TASFWriter;
    Image2: TImage;
    ToolButton6: TToolButton;
    procedure A_OptionExecute(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure A_PlayExecute(Sender: TObject);
    procedure A_StopExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure A_CaptureExecute(Sender: TObject);
    procedure A_OnTopExecute(Sender: TObject);
    procedure A_FullScreenExecute(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure A_ExitExecute(Sender: TObject);
    procedure A_BitmapExecute(Sender: TObject);
    procedure A_FileExecute(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
  private
    CapFName: WideString;
    procedure VMRTextOut(AText: string);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frm_Main: Tfrm_Main;

implementation

uses U_Option;

{$R *.dfm}

procedure Tfrm_Main.A_OptionExecute(Sender: TObject);
begin
  frm_Option.ShowModal;
end;

procedure Tfrm_Main.Timer1Timer(Sender: TObject);
var
  Position: int64;
  Rate: Double;
  Hour, Min, Sec, MSec: Word;
const
  MiliSecInOneDay = 86400000;
begin
  if frm_Option.FilterGraph.Active then
  begin
    with frm_Option.FilterGraph as IMediaSeeking do
    begin
      GetCurrentPosition(Position);
      GetRate(Rate);
    end;
    DecodeTime(Position div 10000 / MiliSecInOneDay, Hour, Min, Sec, MSec);
    StatusBar1.SimpleText := Format('%d:%d:%d:%d', [Hour, Min, Sec, MSec]);
  end;
end;

procedure Tfrm_Main.VMRTextOut(AText: string);
var
  VMRBitmap: TVMRBitmap;
begin
  if AText = '' then exit;
  VMRBitmap := TVMRBitmap.Create(VideoWindow1);
  with VMRBitmap, Canvas do
  begin
    LoadEmptyBitmap(VideoWindow1.Width, VideoWindow1.Height, pf24bit, clSilver);
    Source := VMRBitmap.Canvas.ClipRect;
    Options := VMRBitmap.Options + [vmrbSrcColorKey];
    ColorKey := clSilver;
    Brush.Color := clSilver;
    Font := frm_Option.AFont;
    TextOut(0, 0, AText);
    DrawTo(0, 0, 1, 1, 0.5);
  end;
  VMRBitmap.Free;
end;

procedure Tfrm_Main.A_PlayExecute(Sender: TObject);
var
  Multiplexer: IBaseFilter;
  Writer: IFileSinkFilter;
  PinList: TPinList;
  i: integer;
  FSize: TPoint;
begin
  with frm_Option do
  begin
    // Change Form size
    if CB_VideoFormats.ItemIndex <> -1 then
    begin
      FSize := GetMediaTypeOfSize(VideoMediaTypes.Items[CB_VideoFormats.ItemIndex].AMMediaType^);
      if FSize.X <> 0 then
        frm_Main.Width := FSize.X + 8;
      if FSize.Y <> 0 then
        frm_Main.Height := FSize.Y + 94;
    end;
    // Change mode
    FilterGraph.Mode := gmCapture;
    // Activate the filter graph, at this stage the source filters are added to the graph
    FilterGraph.Active := true;
    // configure output Audio media type + source
    if AudioSourceFilter.FilterGraph <> nil then
    begin
      PinList := TPinList.Create(AudioSourceFilter as IBaseFilter);
      i := 0;
      while i < PinList.Count do
        if PinList.PinInfo[i].dir = PINDIR_OUTPUT then
        begin
          if CB_AudioFormats.ItemIndex <> -1 then
            with (PinList.Items[i] as IAMStreamConfig) do
              SetFormat(AudioMediaTypes.Items[CB_AudioFormats.ItemIndex].AMMediaType^);
          PinList.Delete(i);
        end else inc(i);
      if CB_InputLines.ItemIndex <> -1 then
        with (PinList.Items[CB_InputLines.ItemIndex] as IAMAudioInputMixer) do
          put_Enable(true);
      PinList.Free;
    end;
    // configure output Video media type
    if VideoSourceFilter.FilterGraph <> nil then
    begin
      PinList := TPinList.Create(VideoSourceFilter as IBaseFilter);
      if CB_VideoFormats.ItemIndex <> -1 then
        with (PinList.First as IAMStreamConfig) do
          SetFormat(VideoMediaTypes.Items[CB_VideoFormats.ItemIndex].AMMediaType^);
      PinList.Free;
    end;
    // now render streams
    with FilterGraph as IcaptureGraphBuilder2 do
    begin
      // Connect Video preview (VideoWindow)
      if VideoSourceFilter.BaseFilter.DataLength > 0 then
        RenderStream(@PIN_CATEGORY_PREVIEW, nil, VideoSourceFilter as IBaseFilter,
          nil, VideoWindow1 as IBaseFilter);
      // In capture mode
      if A_Capture.Checked then
      begin
        // set the output filename
        SetOutputFileName(MEDIASUBTYPE_Avi, PWideChar(CapFName), Multiplexer, Writer);
        // Connect Video capture streams
        if VideoSourceFilter.FilterGraph <> nil then
          RenderStream(@PIN_CATEGORY_CAPTURE, nil, VideoSourceFilter as IBaseFilter,
            nil, Multiplexer as IBaseFilter);
        // Connect Audio capture streams
        if AudioSourceFilter.FilterGraph <> nil then
        begin
          RenderStream(nil, nil, AudioSourceFilter as IBaseFilter,
            nil, Multiplexer as IBaseFilter);
        end;
      end;
    end;
    FilterGraph.Play;
    VMRTextOut(frm_Option.E_Text.Text); //字幕
    Timer1.Enabled := true;
  end;
  A_Play.Checked := True;
  A_Capture.Enabled := True;
end;

procedure Tfrm_Main.A_StopExecute(Sender: TObject);
begin
  Timer1.Enabled := False;
  A_Play.Checked := False;
  frm_Option.FilterGraph.Stop;
  frm_Option.FilterGraph.Active := False;
  
  VideoWindow1.Canvas.Lock;
  try
    VideoWindow1.Canvas.StretchDraw(VideoWindow1.Canvas.ClipRect, Image1.Picture.Graphic);
  finally
    VideoWindow1.Canvas.Unlock;
  end;
end;

procedure Tfrm_Main.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  A_Stop.Execute;
end;

procedure Tfrm_Main.A_CaptureExecute(Sender: TObject);
begin
  A_Stop.Execute;
  if CapFName = '' then
  begin
    if not SaveDialog1.Execute then Exit;
    A_Capture.Checked := True;
    CapFName := SaveDialog1.FileName;
  end else
  begin
    A_Capture.Checked := False;
    CapFName := '';
  end;
  A_Play.Execute;
end;

procedure Tfrm_Main.A_OnTopExecute(Sender: TObject);
begin
  A_OnTop.Checked := not A_OnTop.Checked;
  if A_OnTop.Checked then
    SetWindowPos(handle, HWND_TOPMOST, Left, Top, Width, Height, 0) else
    SetWindowPos(handle, HWND_NOTOPMOST, Left, Top, Width, Height, 0);
end;

procedure Tfrm_Main.A_FullScreenExecute(Sender: TObject);
begin
  A_FullScreen.Checked := not A_FullScreen.Checked;
  VideoWindow1.FullScreen := A_FullScreen.Checked;
end;

procedure Tfrm_Main.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  // Esc exit full screen mode
  if Key = 27 then
  begin
    A_FullScreen.Checked := True;
    A_FullScreen.Execute;
  end;
end;

procedure Tfrm_Main.A_ExitExecute(Sender: TObject);
begin
  Close;
end;

procedure Tfrm_Main.A_BitmapExecute(Sender: TObject);
var
  ABitmap: TBitmap;
//  AStream: TMemoryStream;
begin
  if not SaveDialog2.Execute then exit;
  ABitmap := TBitmap.Create;
//  AStream := TMemoryStream.Create;
  try
//    VideoWindow1.VMRGetBitmap(AStream);
    SampleGrabber1.GetBitmap(ABitmap);
//    AStream.SaveToFile(SaveDialog2.FileName);
    ABitmap.SaveToFile(SaveDialog2.FileName);
  finally
//    AStream.Free;
    ABitmap.Free;
  end;
end;

procedure Tfrm_Main.A_FileExecute(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    A_Stop.Execute; //停止
//    frm_Option.FilterGraph.Mode := gmNormal;
    frm_Option.FilterGraph.Active := True;
    frm_Option.FilterGraph.RenderFile(OpenDialog1.FileName);
    frm_Option.FilterGraph.Play;
    VMRTextOut(frm_Option.E_Text.Text); //字幕
    Timer1.Enabled := True;
    A_Play.Checked := True;
    A_Capture.Enabled := False;
  end;
end;

procedure Tfrm_Main.ToolButton6Click(Sender: TObject);
begin
  SampleGrabber1.GetBitmap(Image1.Picture.Bitmap);
  Image1.Picture.SaveToFile('c:\photo\1.bmp');
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产一区视频在线观看| 欧美老肥妇做.爰bbww| 久久久久久久久99精品| 国产伦理精品不卡| 久久精品人人做| 成人av免费在线| 有码一区二区三区| 欧美精品乱码久久久久久| 蜜桃久久av一区| 国产日韩欧美综合在线| a美女胸又www黄视频久久| 亚洲免费毛片网站| 欧美日韩第一区日日骚| 韩国三级电影一区二区| 国产精品久99| 欧美日韩精品一区二区三区四区 | 日本高清不卡视频| 一区二区三区视频在线看| 欧美精品一卡二卡| 国产一区二区中文字幕| 日韩理论片网站| 欧美精品免费视频| 粉嫩一区二区三区性色av| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 天天色综合天天| 国产午夜精品一区二区| 欧美体内she精高潮| 久久99精品国产.久久久久久| 国产精品萝li| 欧美二区乱c少妇| 高清在线成人网| 偷拍亚洲欧洲综合| 中文字幕中文字幕在线一区| 555夜色666亚洲国产免| 懂色av一区二区三区免费看| 日韩黄色免费网站| 国产精品狼人久久影院观看方式| 欧美电影在哪看比较好| 99久久伊人精品| 理论片日本一区| 一区二区三区在线不卡| 久久亚洲春色中文字幕久久久| 在线观看日韩高清av| 国产在线国偷精品免费看| 亚洲午夜av在线| 亚洲欧洲精品天堂一级| 日韩一级完整毛片| 欧美三级中文字幕| 99久久精品一区二区| 久久爱另类一区二区小说| 亚洲一区二区三区中文字幕 | 国产精品福利一区二区三区| 欧美一区二区三区免费大片| 色婷婷精品久久二区二区蜜臂av| 国精产品一区一区三区mba视频| 亚洲一区二区三区四区不卡| 亚洲素人一区二区| 国产亚洲制服色| 26uuu久久综合| 日韩免费电影一区| 欧美一级日韩一级| 4438x亚洲最大成人网| 欧美性一区二区| 色综合天天性综合| 97成人超碰视| 91在线精品一区二区三区| 国产成人在线色| 国产精品亚洲а∨天堂免在线| 日韩电影一区二区三区四区| 亚洲18色成人| 污片在线观看一区二区| 亚洲成av人片一区二区三区| 亚洲欧美国产毛片在线| 亚洲欧洲国产日本综合| 最新日韩av在线| 亚洲丝袜另类动漫二区| 国产精品热久久久久夜色精品三区| 久久亚洲精华国产精华液 | 丰满白嫩尤物一区二区| 国产大片一区二区| 成人免费高清在线| 91女厕偷拍女厕偷拍高清| 99久久精品一区| 欧美色涩在线第一页| 精品视频在线视频| 欧美三级视频在线| 欧美高清你懂得| 欧美变态tickling挠脚心| 精品国产乱码久久久久久图片| 精品欧美一区二区在线观看| 亚洲精品在线三区| 欧美激情在线看| 亚洲丝袜另类动漫二区| 一区二区三区欧美久久| 人人狠狠综合久久亚洲| 精品亚洲国内自在自线福利| 丁香一区二区三区| 91美女视频网站| 欧美妇女性影城| 国产亚洲人成网站| 自拍偷拍欧美激情| 丝袜美腿亚洲综合| 国产成人夜色高潮福利影视| 不卡一区二区三区四区| 欧美久久免费观看| 国产亚洲综合性久久久影院| 亚洲欧美日韩在线不卡| 免费看欧美女人艹b| 国产suv精品一区二区6| 日本高清不卡一区| 欧美岛国在线观看| 国产精品超碰97尤物18| 午夜精品久久一牛影视| 国产一区在线观看麻豆| 色综合 综合色| 日韩欧美亚洲一区二区| 国产精品丝袜一区| 天天综合色天天综合色h| 成人免费电影视频| 8v天堂国产在线一区二区| 欧美国产日韩亚洲一区| 亚洲大片精品永久免费| 国产传媒一区在线| 欧美精品黑人性xxxx| 国产精品婷婷午夜在线观看| 首页国产欧美久久| 成人久久18免费网站麻豆| 在线电影欧美成精品| 国产精品免费视频观看| 开心九九激情九九欧美日韩精美视频电影| 国产91高潮流白浆在线麻豆| 欧美一卡在线观看| 亚洲欧美激情小说另类| 国产精品99精品久久免费| 欧美日韩激情在线| 中文字幕一区二区三区不卡在线| 美女高潮久久久| 精品视频999| 一区二区三区不卡视频| 粉嫩久久99精品久久久久久夜| 日韩一级片网址| 亚洲妇女屁股眼交7| 成人毛片老司机大片| 久久这里都是精品| 天堂一区二区在线| 欧美视频一区二区三区| 国产精品久久三| 国产成人亚洲综合a∨猫咪| 欧美电视剧在线观看完整版| 首页国产丝袜综合| 欧美日韩视频在线观看一区二区三区 | 日韩三级在线观看| 午夜国产不卡在线观看视频| 色偷偷成人一区二区三区91| 国产婷婷精品av在线| 精品在线一区二区三区| 日韩欧美一区二区在线视频| 亚洲国产裸拍裸体视频在线观看乱了| 不卡的av在线| 国产精品久久久久一区二区三区共| 精品一区二区三区在线播放| 日韩欧美一区电影| 精品亚洲成av人在线观看| 日韩一卡二卡三卡四卡| 免费日本视频一区| 日韩精品一区二区三区老鸭窝| 日韩av在线免费观看不卡| 欧美一级欧美三级在线观看| 日韩 欧美一区二区三区| 欧美日韩黄色影视| 蜜臀a∨国产成人精品| 欧美一区二区视频在线观看2022| 婷婷国产在线综合| 欧美一级理论性理论a| 蜜臀精品一区二区三区在线观看 | 日韩午夜激情视频| 蜜臀av性久久久久蜜臀av麻豆| 日韩女优视频免费观看| 久久精品国产一区二区| 久久蜜臀精品av| 成人精品一区二区三区四区| 亚洲欧洲性图库| 一本色道**综合亚洲精品蜜桃冫| 一区二区三区资源| 欧美性大战久久| 麻豆视频一区二区| 国产欧美日韩卡一| 91麻豆蜜桃一区二区三区| 亚洲中国最大av网站| 91精品国产91热久久久做人人| 麻豆成人免费电影| 国产午夜精品在线观看| 91蝌蚪porny| 亚洲成人动漫在线免费观看| 日韩欧美卡一卡二| 不卡电影一区二区三区| 亚洲国产精品欧美一二99| 欧美哺乳videos| 91免费在线播放|