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

显示视频帧有关问题

2012-01-19 
显示视频帧问题我有一段avi格式的视频,不需要解码,已经是帧的形式了,我想把这段视频显示在自己分割的一块

显示视频帧问题
我有一段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();

热点排行