加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

最新flash player 11.4.402.278在Win7 + Firefox环境下无法检测

发布时间:2020-12-15 18:31:08 所属栏目:百科 来源:网络整理
导读:昨天刚刚更新到了最新的flash播放器插件版本,就碰到了flash摄像头拍照的bug,明明摄像头已经被其他程序占用了,但是在Win7 Firefox下仍然会被当作摄像头正常,而换了操作系统、浏览器、flash player版本之中的任何一个,就都能正确检测到摄像头被占用的情况

昨天刚刚更新到了最新的flash播放器插件版本,就碰到了flash摄像头拍照的bug,明明摄像头已经被其他程序占用了,但是在Win7 Firefox下仍然会被当作摄像头正常,而换了操作系统、浏览器、flash player版本之中的任何一个,就都能正确检测到摄像头被占用的情况了。

Gmail和Facebook网站的换头像功能中进行测试,也同样是不能检测到摄像头被占用的情况,换IE,Chrome都可以给出摄像头被占用的提示信息。

截图:




故障原因分析:

Flash Action Script API中并没有一个专门的事件用于通知摄像头是否已经被其他程序占用,我想这不能不说是一个设计缺陷。

为了检测是否被占用,通常的做法有3种(这里假定已经判断了摄像头存在):

  1. 设置一个定时器,定时检测摄像头Camera实例的帧率currentFPS,如果大于0表示摄像头可用。
  2. 设置一个定时器,在摄像头的ActivityEvent事件触发时,表示摄像头正常,如果定时器结束时还没有该事件触发,表示被占用。
  3. 结合上述两种,联合判断。

通常是奏效的,但在flash player 11.4.402.278 + Win7 + Firefox的组合下,就废了,尽管摄像头实际已被外部程序占用,但仍然会触发ActivityEvent事件,仍然能够检测到大于0的帧率,与正常状况无法区分。

这个问题暂时还没有完美的解决方法,不过也不是完全不可补救。

补救方案:

  1. 判断是否是上述环境组合,如果是,忽略掉前两次的ActivityEvent事件,如果有第3次的ActivityEvent事件触发,表明摄像头正常,否则表明被占用。ActivityEvent事件触发于摄像头画面有活动的时候,如果你的人正对着摄像头,那就可用检测到。缺陷是,如果吧摄像头对着静止的物体,则不能正确判断。
  2. 判断是否是上述环境组合,如果是,检测装载摄像头的video实例的画面内容,如果画面内容全黑,表明摄像头没有拍到东西,很可能是被占用了。这个方法需要遍历画面,全部遍历太低效,可用抽样,比如每5x5像素的网格内取一个像素进行检测。

期待这个flash player版本赶紧出更新的版本吧!

flash player的升级常常带来一些问题,弄得我总是跟着它的版本改动我的代码。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读