-
大小: 14.22MB文件类型: .zip金币: 2下载: 0 次发布日期: 2023-07-31
- 语言: C/C++
- 标签: directshow 视频播放
资源简介
MFC+DirectShow实现视频播放器,同事还可以摄像头采集视频,并播放出来
代码片段和文件信息
#include “StdAfx.h“
#include “MyCapPin.h“
CMyCapPin::CMyCapPin(void)
{
CoInitialize(NULL);
m_CapGraph=NULL;
m_pGraph=NULL;
m_pSysDevEnum=NULL;
m_pMoniker=NULL;
m_pEnumCat=NULL;
m_pWindow=NULL;
m_pControl=NULL;
m_pbaseFilter=NULL;
m_hWnd=(HWND)INVALID_HANDLE_VALUE;
}
CMyCapPin::~CMyCapPin(void)
{
CoUninitialize();
}
BOOL CMyCapPin::AddFilter()
{
HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2 NULL CLSCTX_INPROC_SERVER
IID_ICaptureGraphBuilder2 (void **)&m_CapGraph);
if(SUCCEEDED(hr))
{
hr=CoCreateInstance(CLSID_FilterGraphNULLCLSCTX_INPROC_SERVERIID_IGraphBuilder(void**)&m_pGraph);
if (SUCCEEDED(hr))
{
m_CapGraph->SetFiltergraph(m_pGraph);
}
else
{
m_CapGraph->Release();
return FALSE;
}
return TRUE;
}
else
return FALSE;
}
BOOL CMyCapPin::CreateDev()
{
HRESULT hr=CoCreateInstance(CLSID_SystemDeviceEnumNULLCLSCTX_INPROC_SERVERIID_ICreateDevEnum(void**)&m_pSysDevEnum);
hr=m_pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory&m_pEnumCat0);
return SUCCEEDED(hr);
return FALSE;
}
void CMyCapPin::SetHwnd(HWND hWnd)
{
m_hWnd=hWnd;
}
BOOL CMyCapPin::Create(void)
{
HRESULT hr;
if (!AddFilter()||!CreateDev())
{
return FALSE;
}
ULONG cFetched;
while(m_pEnumCat->Next(1 &m_pMoniker &cFetched) == S_OK)
{
hr=m_pMoniker->BindToobject(00IID_IbaseFilter(void**)&m_pbaseFilter);
hr=m_pGraph->AddFilter(m_pbaseFilterL“Capture Filter“);
hr=m_CapGraph->RenderStream(&PIN_CATEGORY_PREVIEW&MEDIATYPE_Videom_pbaseFilterNULLNULL);
hr=m_pGraph->QueryInterface(IID_IVideoWindow(void**)&m_pWindow);
hr=m_pGraph->QueryInterface(IID_IMediaControl(void**)&m_pControl);
m_pControl->Run();
m_pWindow->put_Owner((OAHWND)m_hWnd);
m_pWindow->put_Windowstyle(WS_CHILD);
m_pWindow->get_Width(&pWidth);
m_pWindow->get_Height(&pHeight);
m_pWindow->SetWindowPosition(00pWidthpHeight);
m_pMoniker->Release();
}
/* m_pSysDevEnum->CreateClassEnumerator(CLSID_VideoCompressorCategory&m_pEnumCat0);
IPropertyBag* pProp= NULL;
while (m_pEnumCat->Next(0&m_pMoniker&cFetched)==S_OK)
{
m_pMoniker->BindToStorage(00IID_IPropertyBag(VOID**)&pProp);
VARIANT varName;
varName.vt = VT_BSTR;
pProp->Read(L“FriendlyName“ &varName0);
CString str=(char*)varName.bstrVal;
if (str.Find(“Microsoft Video 1“0)!= -1)
{
m_pMoniker->BindToobject(0 0 IID_IbaseFilter (void**)&m_pCompress);
m_pMoniker->Release();
break;
}
VariantClear(&varName);
}
m_pEnumCat->Release();
if (m_pCompress==NULL)
{
AfxMessageBox(IDOK);
return;
}
m_pGraph->AddFilter(m_pCompressL“com“);
CoCreateInstance(CLSID_AviDestNULL CLSCTX_ALL
IID_IbaseFilter(void**)&pMux);
pGraph->AddFilter(pMuxL“Mux“);
CoCreateInstance(CLSID_FileWriter NULL CLSCTX_ALL
IID_IbaseFilter (void **)&pWriter);
pGraph->AddFilter(pWriterL“Writer“);
p
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-11-07 21:17 Pla
目录 0 2013-11-03 09:49 Pla
文件 240128 2013-11-05 21:27 Pla
文件 1717160 2013-11-05 21:27 Pla
文件 6532096 2013-11-05 21:27 Pla
目录 0 2013-11-07 21:16 Pla
目录 0 2013-11-07 21:16 Pla
目录 0 2013-11-05 21:26 Pla
文件 885 2013-10-18 19:25 Pla
文件 30208 2013-11-07 21:17 Pla
文件 636 2013-10-19 14:32 Pla
目录 0 2013-11-05 21:27 Pla
文件 4470 2013-11-05 21:27 Pla
文件 77628 2013-11-05 21:27 Pla
文件 6408 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2 2013-11-05 21:27 Pla
文件 2308 2013-11-05 21:27 Pla
文件 5746 2013-11-05 21:27 Pla
............此处省略49个文件信息
相关资源
- windows下的ffmpeg、MFC制作的播放器
- DirectShow+vb.net摄像头捕获代码
- 基于DirectShow的MFC视频播放器
- QQ可用 Directshow实现的虚拟摄像头win
- Opencv+VC6.0实现摄像头视频的监控
- 基于VC6.0+VFW笔记本摄像头简单应用
- C++(OPENCV)摄像头标定代码带图片O
- 海康 摄像机 SDK 通道获取 视频播放
- MFC+Opencv 摄像头保存为图像和视频
- 基于Directshow技术播放音频,带歌词显
- vc++调用usb摄像头,进行拍照,保存为
- opencv MFC 摄像头 人脸识别
- 简单的OpenCV实现摄像头实时显示和视
- 视频播放器VS,C++, 130行
- c++开发视频播放器(可以播放所有的
- DirectShowSDKinDirectX9.0b
- C++ 控制摄像头摄像、拍照
- OpenCV打开图片和网络摄像头(C++)
- C++实现视频播放器
-
MFC写的MediaPla
yer播放器简单 - 基于MFC对话框的OpenCV视频播放(new)
- VC6.0 OpenCV 摄像头程序
- C++实现调用摄像头并实时二值化
- 奥比中光深度摄像头 C#+源代码
- MFC 视频播放器
- 无误的广角摄像头OPENCV矫正程序2018
- 利用MFC的Picture控件显示图像和视频
- Win32开发的音乐、视频播放器
- MFC+VS2013+OPENCV3.0打开摄像头,拍照并处
-
Qt使用QMediaPla
yer制作的视频播放器
评论
共有 条评论