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();

解决方案 »

  1.   

    不是这么简单的,需要从http 下载mp3到本地,写一个source的过滤器,功能就是下载,然后自己建立filter graph ,你现在用的是智能连接,dx 会选择最方便的连接方式,所以它不会选择你自己的过滤器,所以你需要自己组织播放器图表。具体问题看看dx的帮助,从开始写过滤器开始学吧!!