VC下如何开发点播局域网MP3的客户端?服务器:IIS(HTTP SERVER)客户端:win98 2000 xp 硬件:网络已通 100 Mbps客户端开发应用程序 点播网络MP3(如:play http://192.168.0.1/01/01.mp3)在线播放(启动播放时间小于2秒)我想用DirectShow 开发,不知道能否行得通?如何控制缓冲区大小?大家有更好的建议吗? 谢谢指点!Email: [email protected]我写的代码如下,可以实现本机MP3文件播放,但如何播放网络URL(如:http://www.xmp3.com/01.mp3)呢? int iReturn = 0;
DWORD dwRet; IGraphBuilder *pGraph = 0;
IMediaControl *pMediaControl = 0;
IMediaEvent *pMediaEvent = 0;
HRESULT hResult;
OAFilterState state;
HANDLE hFile;
HANDLE hEvent;
LONG EvCode;
//
// Get file attributes.
//
dwRet = GetFileAttributes( lpCmdLine);
if(dwRet == 0xFFFFFFFF)
{
wprintf(L" Error: Could not find file %s\r\n", lpCmdLine);
exit(0);
}
CoInitialize(NULL);
// Create the filter graph manager.
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (void **)&pGraph); pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
if(pMediaControl == 0)
{
iReturn = 1;
} if(!iReturn)
{
pGraph->QueryInterface(IID_IMediaEvent, (void **)&pMediaEvent);
if(pMediaEvent == 0)
{
iReturn = 1;
}
} if(!iReturn)
{
pGraph->RenderFile(lpCmdLine, NULL);
} //
// Run the graph.
//
if(!iReturn)
{
pMediaControl->Run();
}
pMediaEvent->WaitForCompletion(INFINITE, &EvCode);
//
// Clean up.
//
if(pMediaControl)
{
pMediaControl->Release();
}
if(pMediaEvent)
{
pMediaEvent->Release();
} if(pGraph)
{
pGraph->Release();
}
CoUninitialize();
DWORD dwRet; IGraphBuilder *pGraph = 0;
IMediaControl *pMediaControl = 0;
IMediaEvent *pMediaEvent = 0;
HRESULT hResult;
OAFilterState state;
HANDLE hFile;
HANDLE hEvent;
LONG EvCode;
//
// Get file attributes.
//
dwRet = GetFileAttributes( lpCmdLine);
if(dwRet == 0xFFFFFFFF)
{
wprintf(L" Error: Could not find file %s\r\n", lpCmdLine);
exit(0);
}
CoInitialize(NULL);
// Create the filter graph manager.
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (void **)&pGraph); pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
if(pMediaControl == 0)
{
iReturn = 1;
} if(!iReturn)
{
pGraph->QueryInterface(IID_IMediaEvent, (void **)&pMediaEvent);
if(pMediaEvent == 0)
{
iReturn = 1;
}
} if(!iReturn)
{
pGraph->RenderFile(lpCmdLine, NULL);
} //
// Run the graph.
//
if(!iReturn)
{
pMediaControl->Run();
}
pMediaEvent->WaitForCompletion(INFINITE, &EvCode);
//
// Clean up.
//
if(pMediaControl)
{
pMediaControl->Release();
}
if(pMediaEvent)
{
pMediaEvent->Release();
} if(pGraph)
{
pGraph->Release();
}
CoUninitialize();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货