获取网络流媒体地址的方法简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
获取网络流媒体地址的方法简介
熊峻峰
(长途无线部增值业务中心)
【摘要】本文介绍了如何通过各种手段获取网络媒体地址,从而丰富网络媒体播放器的地址库。
【关键词】手机应用程序,网络媒体播放器,rtsp,流媒体,网络抓包
一、概述
在互联网上存在大量的实时音视频流媒体资源,如“电台世界”()提供了大量的国内、国际广播电台的在线播放服务,美国国家动物园的AnimalCams页面(/Animals/WebCams/default.cfm)中提供了实时观看动物活动的服务,PC用户用Web浏览器访问上述页面后就可以收听、收看相关实时流媒体资源。
随着目前移动互联网用户的数量日益增多,用户通过手机访问上述资源的需求也日渐增多,然而由于上述资源网站播放音视频的插件往往只支持PC版操作系统,导致当手机用户访问这些网站时可以打开网页,但无法播放音视频流。
笔者开发了一款可方便访问各类网络实时、非实时流媒体音视频资源的手机程序(目前仅适用于Windows Mobile操作系统的手机),可以解决上述手机无法访问网页上相关媒体的问题。
笔者开发的手机网络媒体播放器主界面里已经收录了一些网络媒体条目,选择后点击“播放”即可播放。
见下图1和2。
其中图1为操作主界面,选择某目录树叶节点后点击“播放”菜单即可调用播放器播放。
图1:手机网络媒体播放器主界面图2:输入媒体播放的URL
在图2的用户自输入URL的界面中,用户输入mms://或rtsp://开头的媒体URL后,点击“确认”就可以调用播放器播放。
从图1可看到,本程序已经搜集了许多互联网上的音视频流媒体资源,为了不断丰富程序的可播放媒体资源库就需要到互联网上寻找媒体资源,并检查是否可以用于手机播放(有的网络资源限于播放器版本只能在PC上播放,暂时很难在手机上播放)。
因此当通过PC发现了互联网上可用的媒体资源时如何找到其URL地址并导入手机程序就是一个问题了。
本文的主要目的就是介绍如何来获取相关流媒体资源的URL地址。
二、网络流媒体获取途径的简易方法
2.1.直接用搜索网站搜索
有不少网页上提供了各类免费流媒体的URL地址,网络媒体的协议多为mms及rtsp,因此,直接通过Google或百度搜索“mms地址”、“rtsp地址”就能找到许多(大多为mms 协议地址)。
2.2.在网站视频播放窗口查看属性获得地址
用PC访问在美国国家动物园网站,在其中可以看到许多动物的在线视频,如/Animals/GiantPandas/是我国租借出的大熊猫“天天”的在线视频网页,页面上有视频窗口,在视频部分点击鼠标右键查看属性可以在打开的“属性”窗口中看到“位置mms://160.111.253.227/pandacam1”,将此地址输入手机网络播放器软件(软件目录树中已经收录了该地址条目)的“输入URL”框后点击“确定”就可以播放。
2.3.查看源代码获得地址
有的网站在编写网页代码时把视频窗口里的弹出菜单功能屏蔽了,在这种情况下可以点击浏览器的菜单项“查看源代码”,在html源代码里可以通过搜寻关键词来查找媒体地址。
2.3.1在源代码中搜寻协议名称
许多网络媒体都是用mms协议发布的,因此常用的方法就是在源代码中搜寻关键词“mms://”,或者搜索“rtsp://”、“rtspt://”。
如在上述美国动物园熊猫网页里的源代码中搜索“mms://”后可找到的一行代码为:
<param name="URL" value="mms://160.111.253.227/pandacam1"/>
取出其中的地址mms://160.111.253.227/pandacam1,输入手机可以播放。
2.3.2在源代码中搜索网络媒体文件扩展名
1、Flash文件
现在网上许多视频流的文件扩展名是swf或flv,在“最爱视听网”中有一个泰国普吉岛苏林海滩的实时视频(/cam/15.html),查看该页面的源文件,搜索swf,可找到http://203.146.114.210/axis-cgi/mjpg/video.swf。
该地址在PC的Windows Media Player中可直接播放,在手机上播放还需要安装flash插件。
2、ASX文件
ASX文件是一种文本文件,其主要的目的是对流信息进行重定向,类似RPM(RM的中转文件)文件。
在ASX中包含了媒体内容对应的URL,当我们在HTML中让一个HYPERLINK 与ASX联系时,浏览器会直接将ASX的内容送给MEDIA PLAYER,MEDIA PLAYER 会根据ASX 文件的信息用相应的协议去打开指定位置上的多媒体信息流或多媒体文件。
采用ASX文件以后,当浏览器发现一个连接与ASX有关时,它知道需要用MEDIA PLAYER 来播放流信息,于是它就会启动MEIDA PLAYER,MEDIA PLAYER就可以用MMS协议来播放流信息了。
在/tv/jianshiqi/9.html上可看到日本东京高速公路三号线的实时监控视频,在该页面源代码中搜索”.asx”,可找到<param name="Filename" value="/asxnew/jianshiqi/9.asx" valuetype="ref">,取出其中的"/asxnew/jianshiqi/9.asx"再与网站URL拼接成URL:" /asxnew/jianshiqi/9.asx"(该地址用PC版的Windows Media Player可直接播放,而手机版的则不能直接播放),下载该文件,用文本编辑器打开后可看到其中有“<Ref href="http://210.149.148.235/live"/>”取出其中的URL:http://210.149.148.235/live,该地址可输入手机播放器用Windows Media Player播放。
备注:9.asx中还有一链接/userpage/road/yoga.asx,下载yoga.asx 后可看到其中也有同样的视频链接http://210.149.148.235/live
三、通过协议分析获取网络流媒体地址
3.1原理
有许多网站提供的流媒体视频窗口不提供属性查询功能,或通过动态网页技术在对页面查看源代码时无法查到媒体地址,另外有些PC版的网络媒体播放器(如“龙卷风网络收音机”)不显示媒体条目的地址,在这些情况下用通常方式都无法获得媒体地址了。
解决问题的思路就是无论网站或网络媒体播放工具如何隐藏媒体地址,但最后媒体地址总会以明确的明文形式被送入浏览器被媒体插件播放或被送入通用网络媒体播放器播放。
因此只要用网络抓包工具在PC端进行抓包,就有可能从网络数据中找到媒体地址。
3.2抓包工具Wireshark简介
Wireshark是一款网络协议分析工具,其主要功能是对运行程序所在的PC上选择某一个网络接口进行抓包,用内置的网络协议分析系统对网络数据包按网络层级进行分层显示,能够显示出各层网络协议的结构,通过分析员对网络结构各字段的了解,可以从中获取有用的信息。
抓包前先点击菜单项“Capture | Interfaces…”,打开如下窗口图3。
图3:抓包菜单项窗口
窗口中的列表是本机现有的网卡,点击“Start”按钮即开始对流经某个网卡的数据进行抓包。
当网络流量很大时抓到的包数量也会很大,不便于查看,分析,因此可以点击“Option”按钮,在打开的抓包选项窗口中可以设定一系列参数来帮助以后的分析。
其中一个选项是设置抓包过滤器,这是以字符串形式描述网络数据属性,符合过滤器描述字串的网络包被抓取后待分析,不符合的就丢弃,不会参与分析。
在本文描述的要分析网络媒体地址的应用需求情况下,若能够明确知道网络媒体所在的服务器IP地址,则在抓包时可设置抓包过滤器为“host a.b.c.d”,这样就会只抓取与IP地址为a.b.c.d的服务器通信的数据包。
在实际要执行抓包、分析操作的过程时正确的操作顺序应该是先启动抓包过程,然后点击网络媒体的播放按钮,确认开始播放了(听到声音、看到视频)再停止抓包,然后开始分析。
3.3 抓包并分析得到地址
3.3.1通过协议关键词在抓到的包中直接搜索到地址
网站电台世界()上有大量的广播可以实时收听,在手机上用浏览器访问该网站后无法直接播放(可能的原因是网站使用的是兼容PC版本的播放器插件,没有提供兼容手机浏览器的版本),因此若要收听该网站上的节目就只能先得到各个节目的URL,再用手机上的网络媒体播放器来播放。
见图4。
图4:电台世界网站
如访问其中的“CRI Easy FM”广播,按照3.2中介绍进行那个抓包。
抓包结束后的窗口如图所示5。
图5、抓包结束窗口显示
该窗口在菜单栏即工具栏下的部分主要分为三块(上、下左、下右)。
上部的每一行是一个抓到包的大致概况,会列出包序号、抓到的时间、源地址、目的地址、包协议、包内容主要信息,选中某一行即某个包后在下左部分就列出按网络层次、网络协议字段显示的包详细内容,同时在下右部分显示包的十六进制形式及ASCII码形式源数据。
此时点击菜单项“Edit|Find Packet…”,在弹出的窗口中选择按“String”搜索,在输入
框中输入协议关键词mms://(默认的搜索范围是整个包的所有字节),见图6。
点击“查找”后可找到某个包,找到的包被高亮显示,如下图7。
图7、被高亮显示的查找包窗口
在该包的最后(下左部分的倒数两行)发现:Line-based text data: text/html;mms:///fm915\t2,取出URL得到:mms:///fm915,经验证该地址可被手机Windows Media Player播放。
2)找不到协议关键词时在抓包中寻找媒体地址
中国广播网上可以下载文艺之声栏目的长篇联播节目(/option,com_content,task,category,sectionid,19,id,84,Itemid,717.html),每天节目的文件扩展名是.wma,除了可以下载,获取URL地址后也可以在线以流媒体形式收听。
打开源代码搜索“2010-07-25”后可以搜索到<![CDATA[cplb_12_00_00_13_00_00_109-2010-07-25.wma]]>,说明媒体URL的一部分是“cplb_12_00_00_13_00_00_109-2010-07-25.wma”,但把网站地址与之拼接后构成的URL输入Windows Media Player后不能打开,说明不是正确的地址。
应该通过抓包的方法来找地址。
先启动WireShark开始抓包,然后点击“2010-07-25 12:00节目的链接”开始下载,开始传输数据后就可以停止抓包,在抓到的包里搜索关键词“cplb_12_00_00_13_00_00_109-2010-07-25.wma”,可以发现“\t<title>http://211.89.225.146/VOD/SmartEncoder/2010/07/\316\304\322\325\326\256\311\3 71/cplb_12_00_00_13_00_00_109-2010-07-25.wma</title>\r\n”;
其中的http://211.89.225.146/VOD/SmartEncoder/2010/07/\316\304\322\325\326\256\311\371/cplb_1 2_00_00_13_00_00_109-2010-07-25.wma就是该节目的网络地址,不过其中的\316等字符串是WireShark对特殊字符做的8进制数转化处理,需要转换成URL格式,即%hh样的格式(规则是把“\”改写成“%”;把“\”后的3位8进制数转成等值的2位16进制数),如\316改写成%ce,最后转化后的地址是http://211.89.225.146/VOD/SmartEncoder/2010/07/%ce%c4%d2%d5%d6%ae%c9%f9/cplb_12_00
_00_13_00_00_109-2010-07-25.wma。
其实%ce%c4%d2%d5%d6%ae%c9%f9对应的是汉字“文艺之声”的十六进制数内码,因此URL写作http://211.89.225.146/VOD/SmartEncoder/2010/07/文艺之声/cplb_12_00_00_13_00_00_109-2010-07-25.wma也是可以使用的。
经测试,此地址可以在手机上播放。
说明:同时有个很简单就能获取该地址的方法:使用遨游(Maxthon)浏览器,在其中的”遨游设置中心|文件下载”中将“下载管理设置”从缺省的“不使用下载工具”改成“遨游下载”(或选择其他的下载工具),保存配置后点击页面上的下载图标后,浏览器会弹出“添加任务窗口”,其中就包含了地址URL,见图8.
图8、傲游下载的添加任务窗口
四、小结
随着各类智能手机性能的不断增强,用户需要移动互联网应用能力越来越接近甚至超过传统互联网的应用能力,凡是传统互联网上能提供的资源移动用户都希望能同样获取,但目前移动用户要同PC用户一样访问互联网上的在线实时音视频资源仍然存在困难。
通过本文介绍的获取实时音视频资源地址的办法就可以为移动整理出资源库,导入手机客户端媒体播放软件后就能方便用户的使用。
在查找、分析、整理音视频媒体资源地址的过程中需要灵活运用上述的各种方法,而网站编程技术正不断增强,资源地址的获取方式也势必要不断更新,欢迎有兴趣的读者一起参与获取各类资源地址方法的讨论,不断丰富可供移动互联网用户使用的音视频媒体资源库。