【问题标题】:In AS3 how can you detect if someone pulls their camera out of the USB port?在 AS3 中,您如何检测是否有人将相机从 USB 端口中拔出?
【发布时间】:2012-12-13 14:33:05
【问题描述】:

在 AS3 中,如果 SWF 成功控制了某人的摄像头,并且他们开始在所有内容上传输视频,但在中途,他们要么不小心将摄像头从 USB 端口中扭出,要么摄像头发生故障,或其他类似的东西,你怎么能从那个用户那里检测到它?我尝试过使用事件侦听器并每五秒轮询一次不同的变量,但都没有奏效;当这样的事情发生时,Camera 或其事件的任何公共属性似乎都没有表现得好笑。显然,您不能只是继续扫描计算机以查找设备(我猜是有充分理由的)。

这里有什么我遗漏的吗?有没有办法从用户的 SWF(FP 或 AIR,但更重要的是 FP)副本中检测到他们的相机是否由于出现问题而有效停止,例如他们错误地将其从计算机中摆动出来?如果有怎么办?谢谢!

【问题讨论】:

    标签: actionscript-3 apache-flex air flash


    【解决方案1】:

    虽然您可能难以检测到摄像头/麦克风何时停止工作或被停用,但如果您将视频/音频发布到具有NetStream 的服务器,则可以看出出现问题。

    NetStream 有一个info 属性,它是一个NetStreamInfo 对象。它将为您提供运行总字节数以及NetStream 发送到服务器的数据的字节/秒速率。

    如果您使用运行总计,您需要定期检查byteCount 并计算您自己的费率。或者,您可以让 Flash Player 完成所有工作并使用它计算的速率。在录制的情况下,这些值可以指示NetStream 从摄像头/麦克风接收到多少数据(并将发送到服务器)。

    我们发现,当速率低于 5 KB/秒时,我们可以可靠地确定客户端出现问题。我们也在 FMS 服务器(带有自定义服务器端 Actionscript)上使用了相同的阈值和类似的计算。

    【讨论】:

      【解决方案2】:

      我不记得您可以按需拨打正确的“获取相机状态”电话,但您可以尝试收听 the status event 并希望在断开连接时触发。

      如果您还没有这样做,请在 5 秒后尝试检查:if(myCameraObject == null) 假设为 var myCameraObject = Camera.GetCamera();

      如果您找不到更好的解决方案,请考虑在摄像头 Feed 后面放置一个“检测摄像头”按钮。如果相机断开连接,那么用户将看到该按钮并可以单击它以重新连接。

      【讨论】:

        【解决方案3】:

        您可以按照@ToddBFisher 的建议检查相机对象是否为空,检查 Camera.names.length>0 或相机实例的其他一些属性(请参阅下面的链接)。但是在它们中的每一个中,您都需要定期检查它。

        Working with Cameras

        Monitoring Camera Status

        【讨论】:

          猜你喜欢
          • 2011-05-12
          • 1970-01-01
          • 2020-06-07
          • 1970-01-01
          • 1970-01-01
          • 2013-02-16
          • 2012-02-28
          • 2012-12-23
          • 1970-01-01
          相关资源
          最近更新 更多