Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 使用NetStream类,如何检测是否连接了一个工作视频?_Flash_Actionscript 3_Netstream_Videochat - Fatal编程技术网

Flash 使用NetStream类,如何检测是否连接了一个工作视频?

Flash 使用NetStream类,如何检测是否连接了一个工作视频?,flash,actionscript-3,netstream,videochat,Flash,Actionscript 3,Netstream,Videochat,我正在用flash建立一个视频聊天,除了我试图检测其他用户是否正在发送一个工作视频流的部分之外,其他一切都很好 其他用户不发送视频有几个原因 另一个用户没有摄像头 另一个用户有一个摄像头,但该摄像头目前正被另一个应用程序(Skype、Photo Booth、Google Talk等)占用 另一个用户有摄像头,但不允许使用他/她的摄像头 (我想还有其他意想不到的问题……) 那么,如何使用NetStream类检测从其他用户接收的流是否为黑流(由于上述原因) 我想到的最接近的方法是添加一个计时器,从我

我正在用flash建立一个视频聊天,除了我试图检测其他用户是否正在发送一个工作视频流的部分之外,其他一切都很好

其他用户不发送视频有几个原因

  • 另一个用户没有摄像头
  • 另一个用户有一个摄像头,但该摄像头目前正被另一个应用程序(Skype、Photo Booth、Google Talk等)占用
  • 另一个用户有摄像头,但不允许使用他/她的摄像头
  • (我想还有其他意想不到的问题……)
  • 那么,如何使用NetStream类检测从其他用户接收的流是否为黑流(由于上述原因)

    我想到的最接近的方法是添加一个计时器,从我从另一个用户收到的流中轮询currentFps()函数。但到目前为止,这似乎非常不可靠,因为我可能会得到
    currentFps()==0
    ,并因此显示错误,即使在某些情况下我确实从流中获得了视频。这是因为我每4秒轮询一次currentFPS函数的API,假设在00:00:04,根据轮询,我得到“无视频”,但在00:00:05,视频开始播放,因此我需要等到下一个滴答声,直到错误消息消失

    这就是我目前的民意调查结果

    function subscribingStatusPoll(e:TimerEvent):void {
      if (subscribingStream.currentFPS == 0){
        error.text = "No video found from the other user..."
      } else {
        error.text = "";
      }
    }
    
    这是我能想出的唯一一种检测这种情况的方法,但这是不可靠的,实际上我更喜欢一种方法,可以立即检测我收到的流是否有一个工作视频附加到它上,而没有这个丑陋的投票。

    错误的方法。
    虽然在接收端验证数据是一个好主意,但无法检测流是否为真实数据。
    在您的情况下,正在发送的流不是真正的摄影机流,但它仍然是一个流。
    没有对此进行检测。

    为什么不在发送客户端处理验证呢?

    虽然我同意不从服务器端发送“空白”流,但您可能无法访问服务器端,因此它不适用于您的情况。在客户端,您可以每隔一段时间从流中抓取一帧并检查更改,或者只查看时间戳(查看随时间的增加)。这些选项可能看起来有些粗糙,但它们在Flash中肯定会起作用

    如果我必须自己开发这个,我会从这个边缘检测代码开始,用播放流中的帧抓取代替网络摄像头抓取


    一瞥:您可以尝试一个处理断开连接/错误提要的视频框架吗?例如osmf或ovp。不管怎样,这些都不能保护您免受黑屏的影响-为了检查我唯一的解决方案是否涉及更多的轮询:(那么,您能否详细说明如何仅使用flash将错误发送给另一方?我不希望任何外部依赖于某种推送服务器之类的东西。我的意思是,如果接收客户端正在接收流,它应该播放它。您需要查看发送端,以确定是否应该发送流。