[[在线等]]Flash调用摄像头调试不出来,出现白版.请高手帮帮忙啊.
最近在网上搜了个很简单的用Flash调用摄像头的例子,如下:
开始:
1,打开FLASH 8,点库面板的右上角的按钮(如下如红圈处),选“新建视频”,
在弹出的面板中选“视频(受AS控制)”(如下图),然后点确定。
2,从库里把新建的视频拖到场景中,选中该实例,在其属性面板中将“实例名称”改为mycam
3,继续调整该实例的大小为:400 300 (如下图)
4,选中第1帧,添加动作 代码如下:
cam= Camera.get(); //抓取当前默认的摄像头图像
mycam.setMode(400,300,15,); //将摄像头的捕获模式设置为合适大小,每秒15帧
mycam.attachVideo(cam); //把图像传给视频实例播放
5,OK 发布这个FLASH,测试一下看看。(在弹出的隐私设置中,选择“允许使用摄像头设备”)
就这些,我的摄像头是无驱的,在电脑上可用,可是在网页上显示不出来,只是出现白版,点右键设置,什么允许之类的都点了,还是不行,希望有这方面经验的朋友帮下忙.
[解决办法]
以下代码是实现播放视频:
- JScript code
package { //导入所需的类 import flash.display.*; import flash.text.*; import flash.media.*; import flash.net.*; import flash.events.*; import flash.errors.*; import flash.system.*; public class videoPlay extends Sprite { //声明变量 private var IP:String; private var fmsPath:String; private var myNC:NetConnection; private var myNS:NetStream; //构造函数 public function videoPlay() { init(); startConnect(); } //初始化 private function init() { IP="127.0.0.1"; fmsPath="rtmp://"+IP+"/videoPlay"; } //开始连接 private function startConnect() { //创建一个NetConnection连接 myNC= new NetConnection(); //指定AMF的版本 myNC.objectEncoding = ObjectEncoding.AMF0; //分配侦听事件 myNC.addEventListener(NetStatusEvent.NET_STATUS, netStatus); myNC.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityError); //开始连接FMS服务器 myNC.connect(fmsPath); } //侦听事件 public function netStatus(event:NetStatusEvent):void { trace(event.info.code); switch (event.info.code) { case "NetConnection.Connect.Success" : mess.text="连接成功!"; getStream(); break; case "NetStream.Play.StreamNotFound" : mess.text="未找到视频文件"; break; } } private function securityError(event:SecurityErrorEvent):void { mess.text="安全性错误"; } //获取并播放视频 private function getStream():void { //创建NetStream对象 var myNS:NetStream = new NetStream(myNC); //为client属性赋值,以便执行onMetaData事件 myNS.client = this; //分配侦听事件 myNS.addEventListener(NetStatusEvent.NET_STATUS,netStatus); myNS.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncError); //用liveVideo显示视频 liveVideo.attachNetStream(myNS); //开始播放 myNS.play("魔法电波"); } //侦听事件 private function asyncError(event:AsyncErrorEvent):void { } //从视频中读取相关信息 public function onMetaData(info:Object):void { mess.text="节目时长:" + int(info.duration) + " 原始大小:" + info.width + "×" + info.height + " 节目帧频:" + info.framerate; } }}