显示视频帧问题
我有一段avi格式的视频,不需要解码,已经是帧的形式了,我想把这段视频显示在自己分割的一块窗口上,可是不知道如何显示视频帧,望大侠们不吝赐教,解决立马结账,在线等
[解决办法]
我只知道用dshow,不用dshow的话就自己分析avi格式吧
[解决办法]
你想显示视频还是只显示帧?
显示视频得话用DSHOW了,不要效果得话直接RenderStream就好了。
显示帧的话就用sample grabber或者getCurrentImage得到图片数据后显示到窗口上。
[解决办法]
用VFW或D3D
[解决办法]
DirectShow很好解决!
[解决办法]
REFTIME length;
WCHAR path[MAX_PATH];
CButton *button1= (CButton *)GetDlgItem(IDC_BUTTON1);
if(button1)
{
button1-> EnableWindow(FALSE);
}
// RegisterHotKey(m_hWnd,0Xa002,MOD_CONTROL,VK_SPACE);
TCHAR filepath[MAX_PATH];
strcpy(filepath,szFilename);
MultiByteToWideChar(CP_ACP, 0, filepath, -1, path, MAX_PATH);
CoInitialize(NULL);
HRESULT hr = CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void **)&pGraph);
if(FAILED(hr))
{
AfxMessageBox( "DirectShow initialize failed! ");
return;
}
else
{
pGraph-> QueryInterface(IID_IVideoWindow, (void **)&pVW);
pGraph-> QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
pGraph-> QueryInterface(IID_IMediaEventEx, (void **)&pEvent);
pGraph-> QueryInterface(IID_IMediaPosition,(void **)&pMediaPos);
pEvent-> SetNotifyWindow((OAHWND)m_hWnd, WM_GRAPHNOTIFY, 0);
pGraph-> RenderFile(path, NULL);
pMediaPos-> get_Duration(&length);
pVW-> put_Owner((OAHWND)m_VideoWnd-> m_hWnd);
hr = pVW-> put_MessageDrain((OAHWND)m_hWnd);
pVW-> put_WindowStyle(WS_CHILD|WS_CLIPSIBLINGS|WS_CLIPCHILDREN);
pVW-> SetWindowPosition(0,0,472,320);
pVW-> SetWindowForeground(-1);
// Reclaim keyboard focus for player application
::UpdateWindow(m_hWnd);
pMediaControl-> Run();
}
pGraph-> Release();
GetDlgItem(IDC_PAUSE)-> EnableWindow(TRUE);
GetDlgItem(IDC_STOP)-> EnableWindow(TRUE);
CoUninitialize();