当前位置: 首页 > 图文教程 > Flash动画 > Flash动画基础 > FLVPlayer组件识别非flv后缀视频

Flash动画基础
Flash cs3仿真艺术设计 压扁与拉伸运用
Flash动画基础教程:相关基础知识问答
下载网页中的SWF动画和反编辑生成Fla
FLASH设计参考:国外获奖的Flash网站
Webjx收集50个优秀的3D Flash网站设计案例
给有心进入游戏业的年轻人一些忠告
Flash脚本过滤不严 网站被黑客挂马
快速获取Flash源程序中的素材
Flash技术面临的威胁:苹果不支持和HTML5标准
flash加密解密的相关知识
设计Flash广告条的一些注意事项
WEBJX收集国外超酷的33套Flash动态相册程序
Flash职业规划:从Flash设计师到程序员
FlashPlayer10.1将灭掉HTML5
开发Silverlight项目:blend基础
如何让图片在flash8中清晰播放
令人惊叹的创意:真正出类拔萃的FLASH网站

Flash动画基础 中的 FLVPlayer组件识别非flv后缀视频


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-01   浏览: 96 ::
收藏到网摘: n/a

背景

大家一定碰到过这种问题, 在本地测试播放成功的 flv 视频在服务器上无法播放, 并且直接访问 flv 文件被告知找不到文件, 这是因为 IIS 6 的默认配置中并没有 flv 后缀的 mime 映射, 所以会产生 404 找不到文件的错误. 通常的做法是修改 IIS 配置, 添加 flv 的 mime 映射, 问题是解决了, 但如果因为某些条件限制无法修改配置怎么办, 第一个想到的是修改成让他可以被识别的后缀名, 可惜的是自带的组件默认情况下并不允许你那么做, 否则会报告错误

player.contentPath = "water.swf"; // player 是舞台中 FLVPlayer 组件实例名, 这里我把后缀名改成 swf, 以便可以让 IIS 识别

引用:
报错
1005: Invalid xml: URL: "water.swf" No root node found; if file is an flv it must have .flv extension

解决: 使用自定义的 NCManager 替代默认的 NCManager
判断 flv 后缀的代码在 NCManager 的 connectToURL 方法中, 我修改了他的实现从而跳过了这个步骤
NCManager.as 262 行处

代码拷贝框

[Ctrl+A 全部选择 然后拷贝]

代码拷贝框

[Ctrl+A 全部选择 然后拷贝]

我修改代码跳过了这个判断, 这样即使不是 flv 后缀同样能够播放, 当然带来的副作用就是无法使用 SMIL 了.

最后我把修改了的代码另存成 HttpConnectionManager.as, 同时类名也改成 HttpConnectionManager, 放到 fla 所在目录中

代码拷贝框

[Ctrl+A 全部选择 然后拷贝]

这样场景中所有的 FLVPlayer 都使用 HttpConnectionManager 作为 NCManager 了. 不过等等, 这样做是不够的, 因为我们的 HttpConnectionManager 还没有被编译进 SWF 中, 只要简单的加一句HttpConnectionManager 就可以了。

完整的代码

import mx.video.FLVPlayback;
import mx.video.VideoPlayer;
HttpConnectionManager; // 为了让类能够被编译进 swf
VideoPlayer.prototype.ncMgrClassName = "HttpConnectionManager";
var player:FLVPlayback;
player["_vp"][0]._video.smoothing = true; // 让视频能够平滑播放的小 hack
player.contentPath = "water.swf"; // water.flv 后缀名改成了 swf

到这里, 我们的播放器就完成了。

教程及源码下载Player.zip