Firefox 加载元数据事件

Firefox loadedmetadata event

本文关键字:事件 元数据 加载 Firefox      更新时间:2023-09-26

当我使用事件处理程序时:

video.on("loadedmetadata", function() {...})

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

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

下面是一个代码片段:

$("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. 

解决方案摘要:

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

Firefox 错误,目前似乎无法正确调用视频事件,如果与网络摄像头一起使用。即使摄像机尚未正确初始化并设置正确的尺寸,也很可能会对正在"加载"的视频执行,因此所有内容都以不正确的值调用。