|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
发视频点播网站时或许会需要连续播放一系列流媒体文件,我的经验是可以使用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 这就是我的方式,欢迎大家批评指正。 返回类别: 教程 上一教程: 在多行文本框中显示读取信息 下一教程: 求解在SQL中使用了WHERE列所碰到的问题 您可以阅读与"利用HELIX SERVER的SMIL支持在ASP中生成媒体流的播放列表"相关的教程: · 利用SQLSERVER存储过程实现ASP用户身份验证 · 利用ASP生成EXECL文档 · 利用SQL SERVER存储过程实现ASP用户身份验证 · ASP无组件BMP汉字生成类+汉字点阵库 · 用ASP随机生成文件名的函数 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |