1

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

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

4

3 回答 3

1

虽然您可能难以检测相机/麦克风何时停止工作或停用,但如果您将视频/音频发布到带有NetStream.

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

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

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

于 2012-12-27T08:54:34.660 回答
1

我不记得您可以按需进行适当的“获取相机状态”调用,但您可以尝试侦听状态事件并希望在断开连接时触发。

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

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

于 2012-12-13T20:32:32.750 回答
0

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

使用相机

监控摄像机状态

于 2014-09-27T04:38:07.153 回答