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

原创 2004年08月26日 15:22:00

        开发视频点播网站时或许会需要连续播放一系列流媒体文件,我的经验是可以使用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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

HTTP协议下可拖动时间轴播放FLV的实现(伪流媒体)

HTTP协议下实现FLV的播放其实并不复杂,当初实现的原理是使用了flowPlayer插件实现的,效果还不错。但仍有两大问题影响着客户的访问情绪: 1.预加载时页面卡死,似乎没有边下边播。 ...
  • xiunai78
  • xiunai78
  • 2013年07月12日 14:00
  • 11014

iOS中 流媒体播放和下载 韩俊强的博客

iOS中关于流媒体的简介:介于下载本地播放与实时流媒体之间的一种播放形式,下载本地播放必须全部将文件下载完成后才能播放,而渐进式下载不必等到全部下载完成后再播放,它可以一边下载一边播放,在完成播放内容...
  • qq_31810357
  • qq_31810357
  • 2016年01月24日 19:49
  • 5963

HelixServe搭建局域网流媒体服务器

查了两天资料,有了些眉目,在成功搭建数次之后把这篇博客补上       但成功搭建并不是一蹴而就的,从开始的一脸懵逼,到中途的困难频繁造访几欲放弃打算转向研究其他实现方式,再到最后的豁然开朗,真应...
  • u012407484
  • u012407484
  • 2016年06月19日 23:14
  • 3599

HLS科普7 播放列表标签-媒体片段标签

每个媒体片段,由一系列的媒体片段标签和URI进行指定。一些媒体片段标签用于指定未来的媒体片段属性,一些媒体片段标签用于指定未来一段的媒体片段属性,直到在出现该标签才会更新属性值。样例: #EXTINF...
  • cabbage2008
  • cabbage2008
  • 2016年02月18日 12:43
  • 1102

苹果平台上的媒体流播放技术HLS

近日在和朋友聊起媒体流的服务器端实时转码技术的时候,发现苹果的各种终端上的视频播放并未使用常见的基于UDP的RTSP/RTP,而强制使用了Http Live Stream技术,这里稍稍总结了如下。 ...
  • shallon_luo
  • shallon_luo
  • 2012年02月16日 10:39
  • 9221

达尔文媒体流服务器

  • 2013年01月08日 23:03
  • 3.53MB
  • 下载

Linux下视频服务器的实现(流媒体Helix Server)

三、安装、启动和停止Helix服务器 1 软件的获取 Helix Server是RealNetworks公司最新的流媒体服务平台,这个系统和微软的Window Media System不同,它...
  • qfkfw
  • qfkfw
  • 2012年02月20日 11:13
  • 9036

windows下live555+rtsp+ffmpeg媒体源,nginx+rtmp转发服务器,vlc播放rtmp媒体流

1.下载live555+ffmpeg并配置文件作为媒体源 将视频文件me-like-yuh.ts和ffmpeg推流脚本ffmpeg-rtsp2rtmp.bat放在mediaserver目录下 ff...
  • shixin_0125
  • shixin_0125
  • 2017年06月11日 16:16
  • 320

urlhelp 可以获取在线媒体流的IP地址

  • 2017年07月04日 14:12
  • 1.27MB
  • 下载

海康(hikkvision)媒体流SDK

  • 2010年04月02日 22:22
  • 9.52MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用Helix Server的SMIL支持在ASP中生成媒体流的播放列表
举报原因:
原因补充:

(最多只允许输入30个字)