zoukankan      html  css  js  c++  java
  • DShow实现一个avi视频的播放(含有个人解释和注释)

    此项目为win32下的控制台C++代码(别忘记配置DShow库)

     1 // movie_test.cpp : 定义控制台应用程序的入口点。
     2 //
     3 #include "stdafx.h"
     4 #include <DShow.h>
     5 
     6 #pragma comment(lib,"strmiids.lib")        // 也可以在属性里面添加
     7 
     8 int _tmain(int argc, _TCHAR* argv[])
     9 {
    10     IGraphBuilder *pGraph = NULL;          // 图标管理器接口
    11     IMediaControl *pControl = NULL;        // 媒体控制器接口
    12     IMediaEvent *pEvent = NULL;           // 媒体事件接口
    13 
    14     // 初始化com库
    15     HRESULT hr = CoInitialize(NULL);
    16     if(FAILED(hr))
    17     {
    18         printf("初始化com组件失败
    ");
    19         return -1;
    20     }
    21 
    22     // 创建滤波器链表管理器
    23     hr = CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void **)&pGraph);
    24     if(FAILED(hr))
    25     {
    26         printf("初始化com组件失败
    ");
    27         return -1;
    28     }
    29 
    30     //查询媒体控制和媒体事件接口
    31     hr = pGraph->QueryInterface(IID_IMediaControl,(void **)&pControl);
    32     hr = pGraph->QueryInterface(IID_IMediaEvent,(void **)&pEvent);
    33 
    34     //建立链表,这里用户可以更改待播放的文件的名称
    35     hr = pGraph->RenderFile(L"E:\DXSDK\DXSDK 9.0B\Samples\Media\ruby.avi",NULL);
    36     if(SUCCEEDED(hr))
    37     {
    38         //运行链表
    39         hr = pControl->Run();
    40         if(SUCCEEDED(hr))
    41         {
    42             //等待回放结束
    43             long evCode;
    44             pEvent->WaitForCompletion(INFINITE,&evCode);
    45             // 切记:在实际应用中,不能使用INFINITE标识,因为他会不确定的阻塞程序
    46         }
    47     }
    48 
    49     // 释放所有资源
    50     pControl->Release();
    51     pEvent->Release();
    52     pGraph->Release();
    53     CoUninitialize();
    54     printf("this is example
    ");
    55     return 0;
    56 }
  • 相关阅读:
    RSA算法
    Windows-caffe配置
    python 下 excel,csv 文件的读写
    python 网络通讯 服务器端代码demo,能够同时处理多个客户端的连接请求
    python 下串口数据的读取,解析,和保存-
    XML字符串和JAVA对象之间的转化
    MySQL的join on和 where 的执行顺序和区别,以及各种连接说明
    全国各行政区行政编码
    计数器+打卡+习惯+目标APP推荐
    安卓计数器类APP推荐
  • 原文地址:https://www.cnblogs.com/orange1438/p/4161732.html
Copyright © 2011-2022 走看看