|
영상 플레이어를 만드는데. 몇가지 고치고 싶은것과 추가 하고 싶은것이 있긴 하지만 다 만들었어요. 와~~
거기에 비디오 영상을 캡쳐 해서 저장하는 것. 책에 보면서 코드를 보면서 해봐도 링크에러에 문제가 많네요..
아래가 주요 문장인데 소스에서 샘플그래버 생성하는것을 어떻게 하는지..아래는 제가 짜본 소스인데 링크에러..ㅡㅜ
그리고 수정하고 싶은것은. 이미지에 마우스를 오버 하면 그림이 변하게 하고 싶은데 오버 이벤트를 어떻게 처리 해야 할지 모르겠네요. 그리고 소스에 보면
if(OpenDialog1->Execute());
라고 있는데. 찾다가 장성호님의 글을 보고 해봤는데도 잘 안되네요.
하고 싶은건 오픈다이얼로그를 열어서 취소면 그냥 넘어가고 확인이면 영상을 불러와서 초기화및 처리하는 것.
아래 문장이 취소를 해도 실행되고. 그래서
String File = OpenDialog1->FileName; // 취소시 NULL 반환
아래에 (File != NULL) 문장을 추가 했는데도 그 아래가 계속 진행이 되는게 좀 이상하네요..
// 헤더
...
WCHAR FileName[MAX_PATH];
IGraphBuilder *m_pGB;
IVideoWindow *m_pVW;
IMediaControl *m_pMC;
IMediaSeeking *m_pMS;
IMediaPosition *m_pMP;
IBaseFilter *m_pSG;
IBasicAudio *m_pBA;
...
// 소스
//오픈 메소드
...
if(OpenDialog1->Execute());
{
String File = OpenDialog1->FileName;
MultiByteToWideChar(CP_ACP, 0, File.c_str(), -1, FileName, MAX_PATH);
CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&m_pGB);
CoCreateInstance(CLSID_SampleGrabber, NULL,
CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&m_pSG);
m_pGB->QueryInterface(IID_ISampleGrabber, (void**)&m_pSG);
m_pGB->AddFilter(m_pSG, L"SampleGrabber");
m_pGB->RenderFile(FileName, NULL);
Caption = FileName;
m_pGB->QueryInterface(IID_IVideoWindow, (void**)&m_pVW);
m_pGB->QueryInterface(IID_IMediaControl, (void**)&m_pMC);
m_pGB->QueryInterface(IID_IMediaSeeking, (void**)&m_pMS);
m_pGB->QueryInterface(IID_IMediaPosition, (void**)&m_pMP);
m_pGB->QueryInterface(IID_IBasicAudio, (void**)&m_pBA);
...
|