• 2. 用DSPack播放视频


    安装完后,开始学习DSPack。
    首先,要阅读一下(DSPackDir)\help目录下的help.chm文件,粗略地看了一下,内容太多看不出头绪。
    还是先学习一下(DSPackDir)\Demos\D6-D7目录下的那些例子,边动手做边学习吧。

    研究的第一个例子是PlayWin。研究了一下,主要使用TFilterGraph和TVideoWindow来完成。
    TFilterGraph是DSPack中的核心类,其他类都要围绕着它,但是怎么理解它还不清楚。TVideoWindow是个显示播放视频的控件。这两个类的关系好像是数据库控件中Dataset控件和DBGrid控件的关系一样。

    看得差不多后,自己照葫芦画瓢仿制一个。

    1. 新建一个应用,在界面上先放4、5个按钮。
    2. 在控件面板上选择DSPack那页,把前两个控件(TFilterGraph和TVideoWindow)在窗口上各放一个。
    3. 关联
       选中VideoWindow1控件,在属性窗口中将FilterGraph属性设置为FilterGraph1。
       选中FilterGraph1控件,确认属性窗口中的Mode属性为gmNormal。

    4.为Form1增加一个onCreate事件处理程序。
    内容为:
        if not FilterGraph1.Active then FilterGraph1.Active := true;
        FilterGraph1.ClearGraph;
        FilterGraph1.RenderFile('E:\v\951.wmv'); // 简化一点,这里用你本地硬盘上的一个视频文件

    5. 为Form1增加一个onCloseQuery事件处理程序。
    内容为:
        FilterGraph1.Active := false ;

    6.把button1的Caption改为Start,并增加一个OnClick事件
    内容为:
        FilterGraph1.Play;

    运行一下,就可以播放了。下面再增加几个功能按钮,如pause、stop。

    7. 把button2的Caption改为Pause,并增加一个OnClick事件
    内容为:
       FilterGraph1.Pause;


    8. 把button3的Caption改为Stop,并增加一个OnClick事件
    内容为:
        FilterGraph1.stop;

    可以看出4-8步都是调用了TFilterGraph类的方法。

    下面,再增加个全屏功能吧。
    9. 把button4的Caption改为FullScreen,并增加一个OnClick事件
    内容为:
        VideoWindow1.FullScreen :=true ;
       
    10. 为VideoWindow1增加一个OnClick事件
    内容为:
    if videowindow1.FullScreen then
        videowindow1.FullScreen := false ; //退出全屏方式

    一般的视频播放创窗口都有一个进度条,现在我们也来加一个。
    A.1. 在DSPack控件面板上选择倒数第2个控件(TDSTrackBar),放到在窗口上。
    A.2. 关联
       选中DSTrackBar1控件,在属性窗口中将FilterGraph属性设置为FilterGraph1。(这一步好像很熟悉哦)

    重新运行程序,你就会看到一个进度条,并且能够使用这一进度条来调整播放的进度。

  • 相关阅读:
    主流ORM对比分析,莫人云亦云
    避免远程调用中固有的滞后时间问题的最佳方法是进行更少的调用,并让每个调用传递更多的数据。
    挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆
    项目成本管理记忆口诀:
    总是差和自由时差
    成本基线
    php htmlentities函数的问题
    .NET简谈事务、分布式事务处理
    Startup配置类 居然又是约定
    项目管理的九大只是领域输入,工具和输出
  • 原文地址:https://www.cnblogs.com/zhusd/p/1760132.html
Copyright © 2020-2023  润新知