网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 网吧频道 > 网吧技术 > 媒体应用 > 巧寻流媒体地址 编写网络电视播放器  

巧寻流媒体地址 编写网络电视播放器

2006-09-14  作者:网管整理  来源:bitsCN.com  点评 投稿 收藏

摘要:随着宽带的普及,如今家家户户几乎都具备电脑上网,很多网站、个人都构建了自己的视频服务器,网民可以免费收看很多电视、电影。所以,网络电视、电影则成为网民们的又一种时尚的娱乐方式,根据目前网络流行的媒体格式,笔者谈谈网络视频播放器VB编程中的技巧和热点,供编程爱好者们参考学习。
   
【媒体格式简介】
    
    目前Internet上流行的流式媒体传输格式主要有三种:
    
1、Real Video的RM视频影像格式
    
    RM格式是Real Networks公司所开发的一种新型流式视频Real Vedio文件格式,主要用来在低速率的网络上实时传输活动视频影像,可以根据网络数据传输速率的不同而采用不同的压缩比率,在数据传输过程中边下载边播放视频影像,从而实现影像数据的实时传送和播放。
    
2、Microsoft Media technology的ASF格式
    
    Microsoft Media technology的ASF也是一种网上流行的流媒体格式。它的使用与Windows操作系统是分不开的,其播放器Windows Media Player已经与Windows捆绑在一起,不仅用于Web方式播放,还可以用于在浏览器以外的地方来播放影音文件。微软公司推出的Windows Media技术以其方便性、先进性、集成性、低费用等特点,深受人们喜爱。 网管网www.bitscn.com
    
3、QuickTime Movie的QT格式
    
    QuickTime Movie的QT格式是Apple公司开发的一种音频、视频文件格式,用于保存音频和视频信息,具有先进的音频和视频功能,能在Apple MacOS、Microsoft Windows95 /98/NT在内的所有主流计算机操作系统支持。
   
【编程分析】
    
    根据如今网络流式媒体传输格式的特点,我们使用相应播放器中的控件,即可完成一个网络视频播放器的设计,问题看起来比较简单,但其中涉及的问题多多,下面就针对前两种常见的媒体格式进行编程分析:
    
一、WMP.DLL控件编程热点
    
    Microsoft Media technology的网络流式媒体格式使用播放器Windows Media Player中的控件WMP.DLL来播放,编程热点如下:
    
1、设置播放源
    
    通过控件的URL属性设置播放地址,编程方法如下:

    wmp.URL = "rtsp://nettv1.supernj.com/njmovie"

网管联盟bitsCN@com

    'wmp为控件名称,下同
    
2、开始播放
    
    通过控件的play方法实现播放,编程方法如下: 网管bitscn_com

    wmp.Controls.play
    
3、停止播放 网管bitscn_com

    通过控件的stop方法实现停止,编程方法如下:

网管下载dl.bitscn.com

    wmp.Controls.stop 网管u家u.bitscn@com

4、全屏播放
    
    通过控件的fullScreen属性实现全屏播放,编程方法如下:

网管网www.bitscn.com

    wmp.fullScreen = True
    
5、音量设置
    
    通过控件的volume属性实现音量调节,编程方法如下:

网管下载dl.bitscn.com

    wmp.settings.volume = Vol
    
    注:Vol取值范围0~100。这种方法是改变控件自身的输出音量,对系统音量无影响。
    
6、地址的隐蔽
    
    在播放状态下,可通过控件的右键菜单中的“属性”选项查看到播放地址,如果你对地址需要保密,那么可以让控件处于不活动状态,在编程中,即使设置控件的Enabled属性为Flase也不能屏蔽该控件的右键菜单,那么我们最好是把该控件放置在一个Picture控件中,并设置Picture控件的Enabled属性为False就能达到目的。
    
7、视频窗口的调整
    
    通过设置控件的Width和Height属性可改变图像大小,编程方法和代码如下: 网管联盟bitsCN@com

    wmp.Width = Picture1.Width
    wmp.Height = Picture1.Height * vZooms
    wmp.Left = (Picture1.Width - wmp.Width) \ 2
    wmp.Top = (Picture1.Height - wmp.Height) \ 2
    
    注:vZooms是缩放比例,以Picture1为参照物。该控件在图像缩放时横纵比例始终保持一致,如果横纵比例与Picture1大小失调,将在上下或左右两边出现黑色空白区域。
    
    上面已分析WMP.DLL控件的热点编程技巧,由于网络播放不支持快进、后退调节,因此对该控件的媒体播放长度获取和播放位置调整在本文将不再阐述。
    
二、RMOC3260.DLL控件编程热点
    
    Real Networks的网络流式媒体格式使用播放器RealPlayer中的控件RMOC3260.DLL来播放,编程热点如下:
    
1、设置播放源
    
    通过控件的Source属性设置播放地址,编程方法如下:

网管联盟bitsCN_com

    rm.Source = "rtsp://61.161.100.140:8080/broadcast/cs.rm" 网管u家u.bitscn@com

2、开始播放
    
    通过控件的DoPlay方法实现播放,编程方法如下: 网管bitscn_com

    rm.DoPlay
    
3、停止播放

网管下载dl.bitscn.com

    通过控件的DoStop方法实现停止,编程方法如下: 网管bitscn_com

    rm.DoStop
    
4、全屏播放

网管u家u.bitsCN.com

    通过控件的SetFullScreen方法实现全屏播放,编程方法如下:

网管u家u.bitsCN.com

    rm.SetFullScreen
    
5、音量设置
    
    通过控件的SetVolume方法实现音量调节,编程方法如下: 网管bitscn_com

    rm.SetVolume (Vol)
    
    注:Vol取值范围0~100。这种方法是改变系统的Wave类型音量。
    
6、地址的隐蔽
    
    在播放状态下,可通过控件的右键菜单中的选项切换到RealPlayer原播放器中播放,在原播放器中可查看播放地址,如果你对地址需要保密,处理的方法与WMP.DLL控件相同,但这样还不能彻底到达地址保密的目的,原因在于全屏播放模式的差异:两种控件在全屏播放模式中都有自己的右键菜单,而且无法屏蔽,但WMP.DLL的全屏右键菜单无地址查看项目,而RMOC3260.DLL控件的全屏右键菜单仍然可以切换到原播放器,并且当RMOC3260.DLL控件在无法连接到地址源的时候将自动显示地址源信息,这为保密带来了极大的困难。无论是在原播放器中播放,还是在弹出地址源信息对话框时,它们都有一个共同的特点:就是窗口的名称都为RealPlayer,于是我们可以通过API函数来关闭这类窗口,从而到达无法让用户知道播放地址的目的,处理这个问题我们用FindWindow这个API函数实时监测是否有名称为“RealPlayer”的窗口出现,一旦出现就用PostMessage这个API函数将其关闭。实时监测工作在定时器中进行,编程方法和代码如下: 网管联盟bitsCN_com

    'API函数声明,略
    Const WM_CLOSE = &H10
    Private Sub Timer1_Timer()
     Dim hW As Long
     hW = FindWindow(vbNullString, "RealPlayer")
     If hW <> 0 Then PostMessage hW, WM_CLOSE, 0&, 0&
    End Sub
    
7、视频窗口的调整
    
    通过设置控件的Width和Height属性可改变图像大小,编程方法和代码如下: 网管联盟bitsCN@com

    rm.Width = Picture1.Width
    rm.Height = Picture1.Height * vZooms
    rm.Left = (Picture1.Width - rm.Width) \ 2
    rm.Top = (Picture1.Height - rm.Height) \ 2
    
    注:vZooms是缩放比例,以Picture1为参照物。该控件在图像缩放时横纵比例不会保持一致,因此本文调节高度,以便对宽屏视频模式进行手动调节,但该控件的全屏模式会自动调节横纵比例。

中国网管论坛bbs.bitsCN.com

【编程实现】
   
一、添加控件

    
    启动VB,新建立一工程,通过“工程\部件”菜单项,勾选“Real Player ActiveX Control Library”和“Windows Media Player”两项,如图1所示。确定返回,将控件添加到工具箱,并放置到窗体。 网管u家u.bitscn@com

  网管联盟bitsCN@com

图1 添加流媒体控件 网管u家u.bitscn@com


二、编写代码
    
1、初始化地址
    
    向工程添加一个窗体From2,向Form2中添加三个列表框List1(存放频道名称)、List2(存放媒体类型及播放地址)、List3(频道排序,Sorted属性为Ture)。编程方法和代码如下: 网管网www.bitscn.com

    Const pDn = 1000
    Dim pd(1 To pDn) As String
    Private Sub Form_Load()
     pd(1) = "CCTV1-综合频道,1,rtsp://61.139.60.236/tv2-22"
     pd(2) = "南京十八频道,2,rtsp://live.njbg.com.cn:554/broadcast/18.rm"
     pd(3) = "上海魅力广电台,1,http://www.stv.sh.cn/103.asx"
     pd(4) = "四川岷江音乐台,1,mms://218.6.174.207/FM955"
     '注:频道信息结构为:“名称,类型,地址”,名称和类型之间、类型和地址之间用半角逗号分开,类型为1表示用WMP控件播放,类型为2表示用RM控件播放。
     …… '其它频道信息略
     List1.Clear: List2.Clear
     '分离名称和类型、地址
     For k = 0 To List3.ListCount - 1
     p = InStr(1, List3.List(k), ",") 中国网管论坛bbs.bitsCN.com
     If p > 0 Then
     '截取类型及地址
     T = Trim(Mid(List3.List(k), p + 1))
     '检测是否有网络地址
     If InStr(1, T, "://") > 0 Then
     '添加名称
     List1.AddItem Trim(Mid(List3.List(k), 1, p - 1))
    
2、选择频道
    
    当选择List1中的频道后,通过List2中的类型及地址开始播放,编程方法和代码如下:

网管bitscn_com

    '频道名称
    tName = List1.List(List1.ListIndex)
    '频道地址
    tURL = Mid(List2.List(List1.ListIndex), 3)
    '播放类型
    mType = Val(Left(List2.List(List1.ListIndex), 1))
    If mType = 1 Then 'WMP格式
     Form1.wmp.URL = tURL
     Form1.wmp.Controls.play
    ElseIf mType = 2 Then 'RM格式
     Form1.rm.Source = tURL
     Form1.rm.DoPlay
    End If
   
【编程后记】
    
    QuickTime Movie的QT格式本文尚未做编程示范,通过上面分析,可以看出,做一个网络视频播放器并不难,只要有相应的控件并掌握其中的方法、属性等,就非常轻松了,但本文在对地址保密问题的处理上,给出了典范,特别是对RM控件无法连接地址源时出现提示的处理,很多朋友在论坛上提出了这个问题,希望能通过对控件本身的控制来避免提示对话框的出现,这个想法好像难以直接实现,但本文通过其它途径完美实现,而且编程难度极小,所谓殊途同归。 中国网管联盟bitsCN.com
    
    本文设计的播放器也能支持网络音频的播放,同时支持本地媒体的播放。对于本地播放,程序中调用对话框一次打开多个媒体文件,是值得学习和参考的,同时本地播放设计获取媒体长度及媒体当前位置,以便实现快进、后退等播放控制功能,限于篇幅,详细代码参见源码(http://family1.chinaok.com/down/2006 28/mcode.rar)。程序运行结果如图2所示,调试环境:Win2k+Vb6。

网管联盟bitsCN@com

网管网www.bitscn.com

图2:程序效果图 网管网www_bitscn_com


(注:文中内容仅供学术交流,各地的流媒体地址不相同,所以程序中的播放器提供的频道,不保证有效)
网管联盟bitsCN_com

type="text/javascript">showIsAuthorship('2','普通');

 上一篇:歌词同步显示功能 我用编程来实现   下一篇:搭建基于Linux桌面环境的影音平台
巧寻流媒体地址 编写网络电视播放器 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: