关于摄像头叠加文字的问题

strangefay 2010-01-21 06:47:37
最近公司有需求要做这方面的工作
小弟以前从未接触过, 因此前来询问一下

截取采用的是DirectShow
叠加字幕采用的陆其名先生的一个filter
在graphedt中拼接成功, 但是写到程序里确怎么也成功不了
代码如下 大家应该一眼就能看明白...

谢谢大家了 ^_^


{{
// 创建IGraphBuilder接口
hr=CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&(m_pGB));
CHECK_RET(hr);
// 创建ICaptureGraphBuilder2接口
hr = CoCreateInstance (CLSID_CaptureGraphBuilder2 , NULL, CLSCTX_INPROC,
IID_ICaptureGraphBuilder2, (void **) &(m_pCapture));
CHECK_RET(hr);

m_pCapture->SetFiltergraph(m_pGB);
hr = m_pGB->QueryInterface(IID_IMediaControl, (void **)&(m_pMC));
CHECK_RET(hr);
}}

if(!BindFilter(0, &(m_pBF)))
{
LogD(_Q_D,L"[摄像头]-[BindFilter失败]");
return E_FAIL;
}

hr = m_pGB->AddFilter(m_pBF, L"Capture Filter");
if(FAILED(hr))
{
LogD(_Q_D,L"[摄像头]-[AddFilter失败]");
return hr;
}

//Added Code

const GUID CLSID_AVIDecompress ={0xCF49D4E0, 0x1115, 0x11CE, 0xB0, 0x3A, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70};
hr = AddFilterByCLSID(m_pGB, CLSID_AVIDecompress, TEXT("AVI Decompressor"),&m_pAviDec);
if (FAILED(hr))
{
LogD(_Q_D,L"[摄像头]-[OSDFilter加载失败]");
AfxMessageBox(TEXT("Capturefliter to OSDFilter load fail!"));
}

const GUID CLSID_FilterFont ={0xe3fb4bfe, 0x8e5c, 0x4aec, 0x81, 0x62, 0x7d, 0xa5, 0x5b, 0xe4, 0x86, 0xa1};
hr = AddFilterByCLSID(m_pGB,CLSID_FilterFont, TEXT("HQ Title Overlay Std."),&m_pMuxOsd);
if (FAILED(hr))
{
LogD(_Q_D,L"[摄像头]-[OSDFilter加载失败]");
AfxMessageBox(TEXT("Capturefliter to OSDFilter load fail!"));
}

hr = ConnectFilters(m_pGB,m_pBF,m_pAviDec);
if (FAILED(hr))
{
LogD(_Q_D,L"[摄像头]-[OSDFilter连接失败]");
AfxMessageBox(TEXT("Capturefliter to OSDFilter connect fail!"));
}

hr = ConnectFilters(m_pGB,m_pAviDec,m_pMuxOsd);
if (FAILED(hr))
{
LogD(_Q_D,L"[摄像头]-[OSDFilter连接失败]");
AfxMessageBox(TEXT("Capturefliter to OSDFilter connect fail!"));
}

IBaseFilter *pMux = NULL;
m_pCapture->SetOutputFileName(&MEDIASUBTYPE_Asf,
m_sFileName.c_str(),
&pMux,
NULL);

if(pMux == NULL)
{
LogD(_Q_D,L"[摄像头]-[SetOutputFileName失败]");
}

IConfigAsfWriter *pConfig = 0;
hr = pMux->QueryInterface(IID_IConfigAsfWriter, (void**)&pConfig);
if (SUCCEEDED(hr))
{
pConfig->ConfigureFilterUsingProfileGuid(WMProfile_V80_288VideoOnly);
pConfig->Release();
}

//hr = m_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,m_pBF,NULL,pMux);
hr = m_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video, m_pBF, NULL, pMux);
if( FAILED( hr ) )
{
LogD(_Q_D,L"[摄像头]-[RenderStream失败]");
//hr = m_pCapture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,m_pBF,NULL,pMux);
hr = m_pCapture->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, m_pBF, NULL, pMux);
}

pMux->Release();



问题在哪里呢?
...全文
405 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
strangefay 2010-01-22
  • 打赏
  • 举报
回复
自己已解决, 谢谢各位...
strangefay 2010-01-22
  • 打赏
  • 举报
回复
顶一顶 一晚上了 请大家帮帮忙啦 时间很紧

2,542

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧