directshow 陆其明书中例子网络客户端软件调试问题
程序没有改动,也是发送mpeg1数据但是不能播放,视频数据已经传过来,也能统计帧数,但是不能显示,看到有帖子说http://topic.csdn.net/t/20040607/09/3069503.html因为调用Render函数属于智能连接,连接的时候可能用了一些不正常的filter。你这样试一下,先将微软的mpeg1 stream splitter加入到filter graph中,然后再调用m_pGB->Render(m_pSourceReader->GetPin(0)),于是我加上
//Steam splitter
if (m_bInit)
{
hr = CoCreateInstance(CLSID_MPEG1Splitter,
NULL,
CLSCTX_ALL,
IID_IBaseFilter,
(void**)&m_pSS);
if (FAILED(hr))
{
m_bInit = false;
}
}
// construct source filter
// Media type
if (m_bInit)
{
CMediaType mt;
mt.majortype = MEDIATYPE_Stream;
//mt.majortype=MEDIATYPE_MPEG1SystemStream;
mt.subtype = MEDIASUBTYPE_MPEG1System;
m_pSourceStream = new CMemStream(m_pDataList);
m_pSourceReader = new CMemReader(m_pSourceStream, &mt, &hr);
m_pSourceReader->AddRef();
// Add our filter
hr = m_pGB->AddFilter(m_pSS,L"MPEG1SPlitter");
hr = m_pGB->AddFilter(m_pSourceReader, NULL);
//hr = ConnectFilters(m_pGraphBuilder,m_pFileSource,m_pStreamSplitter);
//hr = ConnectFilters(m_pGraphBuilder,m_pFileSource,m_pStreamSplitter);
if (FAILED(hr))
{
m_bInit = false;
}
}
想问问对不对,要是有问题请大家帮个忙和我说说,谢谢。