zoukankan      html  css  js  c++  java
  • 一种用于网络播放的ActiveX控件

        已经有很久没有写博客了,差不多两个月了吧。前段时间在纠结如何写一个播放器的ActvieX控件,基于RTSP协议来写的,专门用于播放H264的视频。现在已经写完了,使用MFC来写的,因为MFC写起来简单嘛。但是感觉MFC写的话不能很好的控制ActiveX的行为,而且MFC写ActiveX控件的资料是很少的。本来ATL的资料就不是很多,用MFC来写ActiveX控件的资料更少。所以我觉得以后自己写ActiveX控件的话还是用ATL来写吧。一直没有用ATL来写ActiveX控件主要是因为ATL太吓人了,完全不知道在搞什么,但是现在觉得也还好啦,毕竟比起全部都来自己写好多了。后面我将会写一个系列的介绍开发一个基于播放网络视频流的的ActiveX控件。当然还是从基于RTSP播放H264的视频开始(其实播放什么样的格式不是特别重要啦,因为ffmpeg自带码流的推断功能,重要的是解决各种恼人的ActiveX的问题和应用层协议的问题。)所以,这篇文章只是开个题而已啦。

         其实开发ActiveX控件也怪苦逼的,开发使用C++开发(为什么不用C#了?不会啊,这是一个原因,二来ffmpeg是C语言写的啊,不用C++用什么啊?)。但是很多时候ActiveX控件要求在网页上使用(话说HTML5都出来了,我们写个毛线的播放视频的ActiveX控件啊?额,这个嘛,ActiveX控件也有取代不了的地方啦,比如ActiveX控件也可以用于应用程序中去,而且ActiveX控件可以很好的学习COM的原理什么的,话说ActiveX肯定还有其他用的地方啦,比如什么安全控件什么的~~~~好吧,怎么略感无力啊)。这时候我们不仅要会C++,还要会一点画网页的技术啦。我就带搞一点点画页面的代码吧。代码如下:

     1 <!DOCTYPE HTML>
     2      <html>
     3      <head>
     4           <script type = "text/javascript">
     5               function doLive() {            
     6                   var video = document.getElementById("video");
     7                   var url = document.getElementById("URL").value;
     8                   var itemID = video.AddURL(url);
     9                   //var itemID = objTag.AddURL("rtsp://192.168.1.166/mm.264");
    10                  video.PlayItem(itemID);
    11               }
    12               function doStop() {
    13                  var video = document.getElementById("video");
    14                  video.StopPlay();
    15              }
    16              
    17              function doPause() {
    18                 var video = document.getElementById("video");
    19                 video.PausePlay();
    20             }
    21         </script>
    22      </head>
    23      <body>
    24          <div id = "container" style = "border: red solid 1px; height: 480px;  640px;">
    25              <object id = "video" classid = "CLSID:12345678........" style = "border: red solid 1px; height: 480px;  640px;">
    26              </object>
    27          </div>
    28          <div id = "buttonpad" style = "height: 60px;  640px;">
    29              <div id = "buttonpad1" style = "height: 25px; with: 640px;">
    30                  <input type = "button" value = "  播   放  " onclick = "doLive()" />
    31                  <input type = "button" value = "暂停继续" onclick = "doPause()" />
    32                  <input type = "button" value = "  停   止  " onclick = "doStop()" />
    33                  URL:<input type = "text" id = "URL" style = "350px;"/>
    34              </div>
    35          </div>
    36      </body>
    37  
    38  </html>

    其中25行的那个CLSID就是你写的ActiveX控件的CLSID啦。head里面写了一些JavaScript的代码,然后body里面就有一些按钮,当按钮被点击的时候就会调用相应后面的JavaScript函数,然后JavaScript函数里面在调用我们写的ActiveX控件里面的方法或者做一些其他的什么事。然后大概就是这样,反正要想着html网页里面是靠事件来进行驱动的,没有什么各种乱七八糟的main函数或者自己设置一个什么循环什么的。这些东西都是没有的,只有点击各种按钮、显示各种各样的东西。好了就是这样了,这一篇先写到这把。剩下的博文后面再来写。

  • 相关阅读:
    2014-2-24 日记
    The C++ Programming Language
    穷举法练习题
    JAVA的语法基础3
    JAVA的语法基础 练习题
    JAVA的语法基础2
    JAVA的语法基础1
    代码结构和标识符
    Eclipse使用
    Java开发环境
  • 原文地址:https://www.cnblogs.com/DennisXie/p/4130987.html
Copyright © 2011-2022 走看看