英雄,能解决问题的就是英雄!

eslea 2002-04-19 03:06:44
我在用DSHOW做MPEG1的网络播放器,大部分参考了CAPBOY的例子。在此表示感谢。在播放.MPG文件的时候一点问题都没有,自由,顺畅.可是为何不能播放VCD中的.DAT文件?问题出在SELECT AND RENDER 一段,我的函数是这样的:最后显示说:"failed render",各位英雄,请出招!
HRESULT CDshowControl::SelectAndRender(CMemReader *pReader, IGraphBuilder **ppFG)
{
HRESULT hr = CoCreateInstance(CLSID_FilterGraph,
NULL,
CLSCTX_INPROC,
IID_IGraphBuilder,
(void**) ppFG);

if (FAILED(hr)) {
return hr;
}
/* Get the various interfaces we need */
IBaseFilter *m_MpegSplitter = NULL;
hr = CoCreateInstance( CLSID_MPEG1Splitter,
NULL,
CLSCTX_INPROC_SERVER,
IID_IBaseFilter,
(void **)&m_MpegSplitter );
//
// Add it to the graph
//
hr = (*ppFG)->AddFilter( m_MpegSplitter, L"SPLITTER" );
if (FAILED(hr)) {
AfxMessageBox("failed add filter!");
return hr;
}
/* Add our filter */
hr = (*ppFG)->AddFilter(pReader, NULL);
if (FAILED(hr)) {
AfxMessageBox("failed add filter!");
return hr;
}

/* Render our output pin */
hr = (*ppFG)->Render(pReader->GetPin(0));
if (FAILED(hr)) {
AfxMessageBox("failed render!");
return hr;
}
(*ppFG)->AddRef();
m_MpegSplitter->Release();
return hr;

}
...全文
47 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
eslea 2002-04-23
  • 打赏
  • 举报
回复
大伙儿,真的没有人做VCD的点播系统吗?高手们,请指点一二,在下感激不尽!
eslea 2002-04-22
  • 打赏
  • 举报
回复
不是的,在MEMFILE的例子中就可以播放.DAT文件.他的媒体类型是这样设置:
mt.majortype = MEDIATYPE_Stream;
mt.subtype =MEDIASUBTYPE_MPEG1VideoCD;
在DSHOW文档资料中,VCD格式是MPEG1的流.请注意:(MPEG1)VideoCD;
faxiao 2002-04-22
  • 打赏
  • 举报
回复
vcd好象是MPEG2格式的,据说MPEG2的FILTER要自己加,呵呵,我也不是很清楚的说,不过好象有那么会事

8,324

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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