0

webrtc+janusgateway+streamCapture を使用してストリーミング サービスを構築しています。

これにより、ビデオのストリーミングが開始されます。

  public streamVideo() {
    var video = $('#video1').get(0);
        var stream;

    video.onplay = () => {
      if (video.captureStream) {
        stream = video.captureStream();
      } else if (video.mozCaptureStream) {
        stream = video.mozCaptureStream();
      } else {
        alert('captureStream() not supported');
      }

            console.log(stream);
      $("#secondvideoforll").get(0).srcObject = stream;

    this.sfutest.createOffer(
      {
        media: { audioRecv: 0, videoRecv: 0, audioSend: 1, videoSend: 1}, // Publishers are sendonly
        stream: stream,
        success: (jsep) => {
          Janus.debug("Got publisher SDP!");
          Janus.debug(jsep);
          var publish = { "request": "configure", "audio": 1, "video": 1 };
          this.sfutest.send({"message": publish, "jsep": jsep});
        },
        error: (error) => {
          Janus.error("WebRTC111 error:", error);
        }
      });
    }
  }

ビデオの再生は完全に機能しますが、オファーを作成しようとすると(さらにaddStream)。次のエラーが表示されます。

WebRTC111 error: DOMException [InternalError: "Cannot create an offer with no local tracks, no offerToReceiveAudio/Video, and no DataChannel."
code: 0
nsresult: 0x0]

同じオファーの作成 (ストリーム パラメーターなし) は Web カメラ ストリーミングには機能しますが、ビデオ ストリーミングには機能しません。

私が見つけた主な違いは、ウェブカメラが:を使用LocalMediaStreamしているのに対し、私streamCaptureは MediaStream を使用していることです。

これに関するアイデアはありますか?

4

1 に答える 1

0

video.captureStream() を呼び出すと getTracks() は空の配列を返しますが、1.5 秒後に期待どおりにトラックを返します。

トラックが追加されていない場合に生成されるエラー: WebRTC111 エラー: DOMException [InternalError: "ローカル トラックがなく、offerToReceiveAudio/Video がなく、DataChannel がないオファーを作成できません

他の人がこれを混乱させる可能性があるため、ドキュメントの目的でこれを追加します。

解決:

setInterval(function(){
// We wait till the mediaTracks are added to mediaStream
console.log(stream.getTracks());
// Further actions with the mediaStream
}, 1000);

ありがとう!

参考:https ://github.com/w3c/webrtc-pc/issues/923

于 2016-11-08T13:29:12.523 に答える