1

イベントハンドラーを使用した場合:

video.on("loadedmetadata", 関数() {...})

Firefox は、コールバックが呼び出されたときにビデオのサイズを適切に設定していないようです。クロムは完全に正常に動作します。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. 
4

1 に答える 1

0

ソリューションの概要:

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

Firefox のバグです。現在、Web カメラで使用するとビデオ イベントが正しく呼び出されないようです。カメラが正しく初期化されておらず、適切なサイズが設定されていない場合でも、ビデオが「ロード」される可能性が高いため、すべてが正しくない値で呼び出されます。

于 2013-10-28T18:44:48.353 に答える