下载此文档

媒体文件播放.docx


文档分类:管理/人力资源 | 页数:约24页 举报非法文档有奖
1/24
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/24 下载此文档
文档列表 文档介绍
上一篇做了一个简单的媒体文件播放器,它到底与其它程序有什么不同呢?,只有这两个东西不是我们自己的,现在就把它变成我们自己的。
    先看看我们做的程序,要播放媒体,就两个步骤,打开文件,播放。跟踪代码的执行过程,无非就是这样:
通过“打开对话框”得到文件:mSourceFile = ();
然后CreateGraph(),看:
void CMyPlayerDlg::CreateGraph(void)
{
    DestroyGraph();//老套路了,先破坏,确保mFilterGraph是NULL,先看DestroyGraph()
    mFilterGraph = new CDXGraph();
    if (mFilterGraph->Create())
    {
        mFilterGraph->RenderFile(mSourceFile);
        mFilterGraph->SetDisplayWindow(());
        mFilterGraph->SetNotifyWindow(this->GetSafeHwnd());
        mFilterGraph->Pause();
    }
}
看DestroyGraph():
void CMyPlayerDlg::DestroyGraph(void)
{//这个函数的作用就是:如果“打开”了就“关闭”,否则什么也不干,
//就是运行了这个函数,一定是“关闭”的
    if (mFilterGraph)//CDXGraph *   mFilterGraph,是CDXGraph指针
    {
        mFilterGraph->Stop();
        mFilterGraph->SetNotifyWindow(NULL);
        delete mFilterGraph;
        mFilterGraph = NULL;
    }
}
CreateGraph函数我们从new CDXGraph()开始“研究”,就是看其构造函数,什么都没做,就是初始化,往下看mFilterGraph->Create():
bool CDXGraph::Create(void)
{
    if (!mGraph)
    {
        if (EEDED(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void **)&mGraph)))
        {
            //AddToObjectTable();这个是用来做GraphEdit调试的,暂且去掉
            return QueryInterfaces();
        }
        mGraph = 0;
    }
    return false;
}
第一个不认识的是mGraph,mGraph是什么?是IGraphBuilder *    mGraph;
    DirectShow是基于模块化的,使用一个Filter Graph Manager来管理整个数据流的处理过程,参与处理的各个功能模块叫做Filter(国内目前的翻译有滤波器、过滤器、滤镜、筛选器等等乱七八糟的), 各个Filter在Filter Graph中按一定的顺序连接成一条流水线协调工作,大致分为3类:Source Filters(负责获取数据)、Transform Filters(负责数据的格式转换,例如数据流的分离/合成、解码/编码)、Rendering Filters(负责数据的去向,显卡、声卡、文件等)。
    组件技术基础上,紧密相连, 它接口来构造和实现,其中几个重要的接口经常需要用到的:IGraphBuilder接口,用来创建Filter Graph Manager;IMediaControl接口,用来控制流媒体在Filter Graph中的流动,例如流媒体的启动和停止;IMediaEvent接口,该接口在Filter Graph发生一些事件时用来创建事件的标志信息并传送给应用程序(参考附2);IVideoWindow: 用于设置多媒体播放窗口的属性。(更多接口请参考附1)
    所以,在CDXGraph类中有如下一些定义:
 

媒体文件播放 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数24
  • 收藏数0 收藏
  • 顶次数0
  • 上传人iris028
  • 文件大小30 KB
  • 时间2018-05-26