|
WMP 10 를 ActiveX로 임포트하고 다음과 같이 하여 동영상 파일을 캡쳐 할 수 있었습니다.
그런데 이것은 해당 플레이어 화면에서 오른쪽 마우스 버튼을 클릭하고
옵션 -> 성능 -> 고급 -> 비디오 가속 -> 비디오 믹싱 렌더러 사용 -> 고화질 모드 사용
을 check 해야 제대로 되는 군요.. 혹시 그 옵션에 대한 프로퍼티나 메소드가 있을텐데
못 찾겠네요.. 찾아주실 분 계세요?
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Capture_Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "WMPLib_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if(OpenDialog1->Execute()) {
Edit1->Text = OpenDialog1->FileName;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WMPlayer1->URL = (WideString) Edit1->Text;
WMPlayer1->controls->play();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
WMPlayer1->controls->pause();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
WMPlayer1->controls->pause();
Graphics::TBitmap *Cap = new Graphics::TBitmap();
HDC DC; /*
TPanel *tmp = new TPanel(this);
tmp->Width = WMPlayer1->Width;
tmp->Height = WMPlayer1->Height;
tmp->Top = WMPlayer1->Top;
tmp->Left = WMPlayer1->Left;
tmp->Visible = true;
tmp->Visible = false;
delete tmp; */
//WMPlayer1->settings->setMode()
Cap->Width = WMPlayer1->ClientWidth;
Cap->Height = WMPlayer1->ClientHeight;
// WMPlayer1->currentMedia->get_imageSourceHeight() 잘 보자~
DC = GetDC(WMPlayer1->Handle);
BitBlt(Cap->Canvas->Handle,WMPlayer1->ClientRect.top,
WMPlayer1->ClientRect.left,Cap->Width,Cap->Height,DC,0,0,SRCCOPY);
Image1->Picture->Bitmap = Cap;
ReleaseDC(WMPlayer1->Handle,DC);
WMPlayer1->controls->play();
Label1->Caption = "X : " + IntToStr(Image1->Picture->Width) + ", Y : "
+ IntToStr(Image1->Picture->Height);
}
//---------------------------------------------------------------------------
|