相信有很多朋友和我们一样,用动易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来实现嵌入式播放,代码为:
以下内容为程序代码:
|
在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/ |
新闻热点
疑难解答
图片精选