2013-10-27 72 views
1

当我使用的事件处理程序:火狐等待loadedmetadata事件

video.on( “等待loadedmetadata”,函数(){...})

火狐似乎不正确时,设置视频尺寸回调被称为。 Chrome工作得很好。有没有办法在Firefox上正确地获取视频尺寸?

编辑: 它似乎工作,如果我把一个调试器,并通过代码手动运行。这让我相信这是一种竞争条件。但是这对我来说没有任何意义,因为该方法被调用,这意味着该事件应该正确发生=维度应该被设置。

下面的代码片段:

$("document").ready() -> 
    # Setup variables 
    video = $("#video") 
    toolbar = $("#toolbar") 
    canvas = $("#filter") 
    context = canvas.get(0).getContext('2d') 

    # Setup webcam 
    # I have a separate webcam module that simply wraps the behavior of 
    # navigator.getMediaStream. Works fine in chrome. 
    webcam.setup(() -> alert("Browser Unsupported.")) 
    webcam.getMedia({video:true}, (localMediaStream) -> 
     video.attr("src", window.URL.createObjectURL(localMediaStream)) 

     # Video loaded event 
     video.on "loadedmetadata", (e) -> 
      # Turn on video controls 
      video.prop("controls", true) 
      # Setup canvas dimensions and add border 
      width = video.width() 
      height = video.height() 
      canvas 
       .css("border", "solid") 
       .css("border-width", "1px") 
       .attr("width", width) 
       .attr("height", height) 
      # In firefox, the width and height are 0! In chrome, they 
      # are correct. I tested videoWidth/videoHeight and most other 
      # variables. Does not work. 
+2

发布一个更完整的代码片段,并解释你到底看到了什么。你有其他一些我们看不到的错误是完全可能的。 – 2013-10-27 04:54:43

+0

添加了一些评论解释的片段。 – ImpGuard

+1

https://bugzilla.mozilla.org/show_bug.cgi?id=926753 找到了。这确实是Firefox中的一个错误。该死。希望这会在我发布我正在工作之前解决。真的不想让黑客兼容。 – ImpGuard

回答

0

的解决方案总结:

bugzilla.mozilla.org/show_bug.cgi?id=926753

Firefox的错误,目前看起来像它如果使用网络摄像头,请不要正确调用视频事件。即使相机没有正确初始化并设置适当的尺寸,对视频进行“加载”也很可能,因此所有内容都以不正确的值调用。