• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

利用Helix Server的SMIL支持在ASP中生成媒体流的播放列表

发布: 2007-6-30 18:56 | 作者: admin | 来源: | 查看: 48次 | 进入软件测试论坛讨论

领测软件测试网 开发视频点播网站时或许会需要连续播放一系列流媒体文件,我的经验是可以使用SMIL语言动态生成需要的播放列表文件。以下将对这种方法作出说明。我感觉这并不是一个很好的方法,但可作为一种思路供大家参考。

首先我们应该了解一下SMIL语言的结构。SMIL是专用于流媒体服务器的一种语言,它是符合XML语言规范的。以下是一个典型的用于Helix Server的SMIL文件:

113.smi
--------------
<smil>
<head>
<meta name="title" content="连续播放"/>
<meta name="author" content="C.C在线视听娱乐网 - C.C.M.C."/>
<meta name="copyright" content="网站所有资源版权归其原作者所有,请于下载试用后24小时内删除"/>
</head>
<body>
<par>
<ref src="rtsp://192.168.0.100/D/200485627_24.mp3" title="Whos Who"/>
</par>
<par>
<ref src="rtsp://192.168.0.100/D/200485624_22.mp3" title="Two-Lane Blacktop"/>
</par>
<par>
<ref src="rtsp://192.168.0.100/D/200485618_20.mp3" title="The Wonders of You"/>
</par>
</body>
</smil>

<head>内的title是指显示在RealPlayer播放机播放列表最上部的标题。author是作者,copyright是版本信息,这些信息可以在点击RealPlayer跑马灯字幕的时候看到。<par>内的<ref>中,scr指的是流媒体文件的位置,title是指此媒体显示在播放列表中的名称。每个<par>定义一个文件,这样就实现媒体流的连续播放。使用这种办法还能很方便的向网站中的媒体文件添加广告或自定义片头片尾。知道文件结构剩下的就好办了。不过注意生成smi文件之前先对字符进行过滤,因为XML中有些字符是不能随意出现的。

代码例:

其中有几个自定义函数不多作介绍(GetExtName为获取文件扩展名)

xRMExtNames="rm,ram,rmvb,mp3,mpeg,mpa"
rmPlayList="smil/a.smi"

Sub WritePlayListRM
dim strTmpSrc,sql
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(server.MapPath(rmPlayList) , True)
tf.WriteLine("<smil>")
tf.WriteLine("<head>")
tf.WriteLine("<meta name=" & chr(34) & "title" & chr(34) & " content=" & chr(34) & XMLFilter(strQuery) & chr(34) & "/>")
tf.WriteLine("<meta name=" & chr(34) & "author" & chr(34) & " content=" & chr(34) & XMLFilter(xSiteName) & chr(34) & "/>")
tf.WriteLine("<meta name=" & chr(34) & "copyright" & chr(34) & " content=" & chr(34) & XMLFilter(xCopyRight) & chr(34) & "/>")
tf.WriteLine("</head>")
tf.WriteLine("<body>")
set rsServer=Server.CreateObject("ADODB.Recordset")
do while not rs.eof
if instr(xRMExtNames,lcase(GetExtName(rs("fileName"))))>0 then
sql="select * from site_servers where UID=" & rs("serverID")
rsServer.open sql,conn,1,1
strTmpSrc=rsServer("RMServer") & rs("fileName")
tf.WriteLine("<par>")
tf.WriteLine("<ref src=" & chr(34) & strTmpSrc & chr(34) & " title=" & chr(34) & XMLFilter(rs("title")) & chr(34) & "/>")
tf.WriteLine("</par>")
rsServer.close
rmNum=rmNum+1
end if
rs.movenext
loop
rs.movefirst
tf.WriteLine("</body>")
tf.WriteLine("</smil>")
tf.Close
set tr=nothing
set rsServer=nothing
End Sub

Function XMLFilter(strInput)
XMLFilter=replace(strInput,"<","(")
XMLFilter=replace(XMLFilter,">",")")
XMLFilter=replace(XMLFilter,chr(34),"")
XMLFilter=replace(XMLFilter,"‘’","")
End Function

这就是我的方法,欢迎大家批评指正。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网