解析SW6.6中调用外部FLV视频的问题_动易Cms教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

相信有很多朋友和我们一样,用动易SW做了视频频道,早先的时候不管是自己上传还是外站引用,如今由于播客的兴起和flv的盛行,在原来用SW做的视频频道中引用外部flv已经有了很现实的意义。比如我们网站是采用了oblog开发的Oblog Video系统。

 

以前一直采用动易系统来做视频新闻,现在当然更愿意选择具有自动编译flv格式和隐藏原始地址功能的vlog了(早先用mms和直接上传的方式,造成我们一个视频文件被人在猫扑上用做签名,几乎吃光我们整个机柜的带宽……)。

 

但是原来的视频频道也必须继续运作下去。于是理所当然的想到了在SW中直接引用vlog的flv视频。一个vlog的标准flash引用地址如下:

 

我们直接把这个swf格式的外部地址插入到动易的“软件”频道。保存没问题,但是发现不能观看。回到后台编辑,发现引用的一个外部地址被拆成了两行——很不幸的问题——vlog的分隔符“$$$”正好和动易的多地址分隔符“$$$”冲突了。

 

于是直接添加外部URL不可能了。于是我们又换了个思路:在软件简介中添加flash,制作一个新的内容页模板,不使用DownloadUrl。这个方案应该是没有问题的,不过我没有去做就否决了。因为第一、动易后台添加软件时地址不能为空,第二、既然用软件频道来做视频,却要以文章频道的方式添加视频源,这个方案很烂。

 

我采用的方式是:添加了一个自定义字段,命名为FlvUrl。添加视频时,如果是传统视频,照老样子操作,如果是flv格式视频,在视频地址处填写“vlog”即可。然后把上面的那段URL填写到自定义选项的“FlvUrl”里面。

 

可以考虑在ShowDownload.asp里直接读取和使用这个字段,但是这样会破坏系统的通用性。我的做法是在内容页模板里改,原来我们在内容页里用一个Iframe引用ShowDownload.asp来实现嵌入式播放,代码为:

 

以下内容为程序代码:


<IFRAME name="Video" frameBorder=0 scrolling=no src="{$InstallDir}{$ChannelDir}/ShowSoftDown.asp?SoftID={$SoftID}&UrlID=0" width="456" height="410"></IFRAME>

 

在ShowSoftDown.asp里原来就有根据后缀判断调用下载地址和实时播放的代码。我们增加了一个判断,如果DownloadUrl里含有“vlog”字样,则采用嵌入flash的方式来调用真实地址。实现在线播放。但是我们需要自定义字段的值。在动易系统里,我们添加的“FlvUrl”字段有一个模板标签——{$MY_FlvUrl}。

所以我在内容页模板里修改如下:

 

 

以下内容为程序代码:

<IFRAME name="Video" frameBorder=0 scrolling=no src="{$InstallDir}{$ChannelDir}/ShowSoftDown.asp?SoftID={$SoftID}&UrlID=0&flashUrl={$MY_FlvUrl}" width="456" height="410"></IFRAME>

 

然后在ShowDownload.asp中用Request.QueryString("flashUrl")来获取。

 

搞开发的朋友肯定已经意识到了将要出现的问题,我们的参数值里含有“&”符号,于是最前面我给出的那个flash地址在传递和获取之后,只剩下了第一个&符号前面的部分。

 

没办法,这个问题只能继续下去,打开include/PowerEasy.Soft.asp文件,找到GetHtml_Soft()这个函数,这是用来根据内容页模板生成内容页的代码。我的目的是在输出FlvUrl这个自定义字段值的时候,把&处理一下。

 

原来的代码:

 

 

以下内容为程序代码:

Do While Not rsField.EOF
strHtml = PE_Replace(strHtml, rsField("LabelName"), PE_HTMLEncode(vtempStr))
rsField.MoveNext
Loop

 

 

修改后的代码:

 

 

以下内容为程序代码:

Do While Not rsField.EOF
Dim vtempStr
vtempStr = rsSoft(Trim(rsField("FieldName")))
If Instr(vtempStr, "FlvUrl") > 0 Then vtempStr = Replace
(vtempStr, "&", "$thand$")
strHtml = PE_Replace(strHtml, rsField("LabelName"), PE_HTMLEncode(vtempStr))
rsField.MoveNext
Loop

 

 

这样我们的Request.QueryString("flashUrl")就可以得到完整的flash地址了,我们在使用它之前再把“$thand$”替换成“&”,放到flash嵌入代码的"Movie"参数值里。

 

测试结果:效果很好,内嵌的flash播放器就是vlog提供的具有全屏、随意拖动、随意变换电影风格、可控制进度、可暂停、可调音量的flash播放器。视频源地址依然是隐藏(对大多数访问者而言)。

 

附1:还有另外一个问题——视频缩略图如果添加外部地址,还是会在前面被加上主站缩略图上传路径的URL。添加外部URL地址如果不是以http开头的,也一样会被加上。而缩略图地址即使以http开头,仍然会被加上。建议这里加一个判断,如果以“http://”打头的,就不要再引用完整的上传路径了。

 

附2:如果你是自己管理,那么有更简单的方式,添加视频地址的时候把“$$$”改成“$$”,在ShowDownload.asp里再把它替换回去就行了。我是为了让编辑的添加工作简化,所以才把复杂的事情交给程序员来做。

 
http://vlog.taihainet.com/FLVPlayerMain.swf?unicode=1&playindex=0&c=0$$$761d50d7cfea242f&s=http://vlog.taihainet.com/
 

查看更多 动易Cms教程  动易Cms模板

来源:模板无忧//所属分类:动易Cms教程/更新时间:2009-09-09
相关动易Cms教程