11

drawImageソースが Web カメラ フィードであるを使用して呼び出そうとするとvideo、Firefox で NS_ERROR_NOT_AVAILABLE: Component is not available.

動画タグが起動するすべてのイベントを待機しようとしました: playplayingcanplayloadeddataloadedmetadataなどですが、何も機能しません。これは、ストリームが要素に適切に読み込まれる前にこれらのイベントが発生しているためと思われます<video>

エラーのある JSFiddle (コンソールでエラーを表示できます)

副作用として、ビデオの幅と高さも正しくありません。

4

1 に答える 1

34

これはFirefoxのバグです。最も簡単な修正方法は、正しいタイミングでイベントが発生しないため、エラーがなくなるまで試行を続けることです。

参照: http://jsfiddle.net/9aT63/25/

drawImage基本的に、try/catch ブロックで呼び出しをラップする必要があります。

function drawVideo() {
  try {
    $vidCanvasCtx.drawImage($vid, 0, 0, $vidCanvas.width, $vidCanvas.height);
    ...
  } catch (e) {
    if (e.name == "NS_ERROR_NOT_AVAILABLE") {
      // Wait a bit before trying again; you may wish to change the
      // length of this delay.
      setTimeout(drawVideo, 100);
    } else {
      throw e;
    }
  }
}
于 2013-09-02T21:18:43.400 に答える