MCODEC - 感恩的心,感谢生命中的每一个人

(本站所有文章都是原创,转载请注明出处)
  首页  :: 联系 :: 订阅 订阅  :: 管理

RTSP 客户端 source filter

Posted on 2010-05-14 21:03  mcodec  阅读(5116)  评论(19编辑  收藏  举报

 

RTSP实时流媒体传输协议的客户端实现,附件是用于windows的dshow插件。

几经修改,连Darwin流媒体服务器,现在我这边测试没有问题。

欢迎对比测试,视频支持H264,MPeg4,音频支持AMR,MP4A(LATM,GENERIC)等规格。

 

其中接口定义为:  

DEFINE_GUID(IID_IURLADDR,   //  new
 0x1014ceb2, 0xcd21, 0x47e1, 0x9e, 0x95, 0xbf, 0x7d, 0xa1, 0x82, 0x2f, 0x11);

    DECLARE_INTERFACE_(IURLADDR, IUnknown)  // 设置url
    {
        STDMETHOD(put_url) (THIS_ char *url) PURE;
    };

 

参考代码片段:  

 HRESULT hr;

 CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGB);

 CoCreateInstance(CLSID_RtspStream, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter,  reinterpret_cast<void**>(&pSource));
 pGB->AddFilter(pSource, L"Tinck RTSP Source");

 IURLADDR *pURLAddr=NULL;
 hr=pSource->QueryInterface(IID_IURLADDR, (void **)&pURLAddr);
 pURLAddr->put_url("rtsp://127.0.0.1/sample_100kbit.mp4");
 pURLAddr->Release();
 pURLAddr=NULL;

 IPin *pOut = NULL;
 hr = GetUnconnectedPin(pSource, PINDIR_OUTPUT, &pOut);
 if (SUCCEEDED(hr))
 {
  pGB->Render(pOut);
  pOut->Release();
  pOut = NULL;
 }

 hr = GetUnconnectedPin(pSource, PINDIR_OUTPUT, &pOut);
 if (SUCCEEDED(hr))
 {
  pGB->Render(pOut);
  pOut->Release();
  pOut = NULL;
 }

 

经简单测试,好像和酷狗音乐播放器有冲突,请关闭酷狗音乐播放器后再测试。

 

 下载地址:https://files.cnblogs.com/mcodec/sourcefilter.rar