首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用[agora.io]接收远程流

如何使用[agora.io]接收远程流
EN

Stack Overflow用户
提问于 2020-05-20 15:37:47
回答 2查看 1.2K关注 0票数 0

我无法从远程流接收任何数据,我用Javascript创建的带有远程流id的div并不表明我不明白为什么!Javascript代码在浏览器上不工作,有点奇怪,这是我第一次遇到这样的问题,请帮我解决。

这是代码:

代码语言:javascript
复制
// Local stream

// rtc object
var rtc = {
  client: null,
  joined: false,
  published: false,
  localStream: null,
  remoteStreams: [],
  params: {}
};

// Options for joining a channel
var option = {
  mode: "rtc",
  codec: "h264",
  appID: "22a27d03d0edf54749a03597d72ad82aaa78",
  channel: "qiossa",
  uid: null,
  token: "006a27d03d0edf54749a03597d72ad82aaaIADHJF46Q3g4Jn+mjfRgh5Le76OO2BpUfEuvw1Qv+35XKFwgy+4AAAAAEACfOV6k44bGXgEAAQCIh8Ze"
};


// Create a client
rtc.client = AgoraRTC.createClient({mode: option.mode, codec: option.codec});

// Initialize the client
rtc.client.init(option.appID, function () {
  console.log("init success");
  }, (err) => {
  console.error(err);
});


// Join a channel
rtc.client.join(option.token, option.channel, option.uid, function (uid) {
  console.log("join channel: " + option.channel + " success, uid: " + uid);
  rtc.params.uid = uid;
}, function(err) {
  console.error("client join failed", err);
});

// Create a local stream
rtc.localStream = AgoraRTC.createStream({
  streamID: rtc.params.uid,
  audio: true,
  video: true,
  screen: false,
});


// Initialize the local stream
rtc.localStream.init(function () {
  console.log("init local stream success");
  // play stream with html element id "local_stream"
  rtc.localStream.play("local_stream");
}, function (err) {
  console.error("init local stream failed ", err);
});


// Publish the local stream
rtc.client.publish(rtc.localStream, function (err) {
  console.log("publish failed");
  console.error(err);
});

//*************************************************************************************************************//

// Remote stream

rtc.client.on("stream-added", function (evt) {  
  var remoteStream = evt.stream;
  var id = remoteStream.getId();
  if (id !== rtc.params.uid) {
    rtc.client.subscribe(remoteStream, function (err) {
      console.log("stream subscribe failed", err);
    });
  }
  console.log("stream-added remote-uid: ", id);
});


rtc.client.on("stream-subscribed", function (evt) {
  var remoteStream = evt.stream;
  var id = remoteStream.getId();
  // Add a view for the remote stream.

  let streamDiv=document.createElement("div"); // Create a new div for every stream
  streamDiv.id= id;                            // Assigning id to div
  streamDiv.style.transform="rotateY(180deg)"; // Takes care of lateral inversion (mirror image)
  remoteContainer.appendChild(streamDiv);

  // Play the remote stream.
  remoteStream.play("remote_video_" + id);
  console.log("stream-subscribed remote-uid: ", id);
});

问题照片

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-23 11:52:55

控制台问题

代码语言:javascript
复制
// Local stream

// rtc object
var rtc = {
  client: null,
  joined: false,
  published: false,
  localStream: null,
  remoteStreams: [],
  params: {}
};

// Options for joining a channel
var option = {
  mode: "rtc",
  codec: "h264",
  appID: "",
  channel: "qiossa",
  uid: null,
  token: "006a27d03d0edf54749a03597d72ad82aaaIADkVIvop7lo0OEkm/7Tuz/Tp4M+TXhFd9DkLAAwu9fNllwgy+4AAAAAEAD4aAmV2FzKXgEAAQBjT8pe"
};


// Create a client
rtc.client = AgoraRTC.createClient({mode: option.mode, codec: option.codec});

// Initialize the client
rtc.client.init(option.appID, function () {
  console.log("init success");
  }, (err) => {
  console.error(err);
});


// Join a channel
rtc.client.join(option.token, option.channel, option.uid, function (uid) {
  console.log("join channel: " + option.channel + " success, uid: " + uid);
  rtc.params.uid = uid;

  // Create a local stream
rtc.localStream = AgoraRTC.createStream({
  streamID: rtc.params.uid,
  audio: true,
  video: true,
  screen: false,
});


// Initialize the local stream
rtc.localStream.init(function () {
  console.log("init local stream success");
  // play stream with html element id "local_stream"
  rtc.localStream.play("local_stream");
}, function (err) {
  console.error("init local stream failed ", err);
});


// Publish the local stream
rtc.client.publish(rtc.localStream, function (err) {
  console.log("publish failed");
  console.error(err);
});


}, function(err) {
  console.error("client join failed", err);
});


//*************************************************************************************************************//

// Remote stream

rtc.client.on("stream-added", function (evt) {  
  var remoteStream = evt.stream;
  var id = remoteStream.getId();
  if (id !== rtc.params.uid) {
    rtc.client.subscribe(remoteStream, function (err) {
      console.log("stream subscribe failed", err);
    });
  }
  console.log("stream-added remote-uid: ", id);
});


rtc.client.on("stream-subscribed", function (evt) {
  var remoteStream = evt.stream;
  var id = remoteStream.getId();
  // Add a view for the remote stream.

  addView(id);

  // Play the remote stream.
  remoteStream.play("remote_video_" + id);
  console.log("stream-subscribed remote-uid: ", id);
});


rtc.client.on("stream-removed", function (evt) {
  var remoteStream = evt.stream;
  var id = remoteStream.getId();
  // Stop playing the remote stream.
  remoteStream.stop("remote_video_" + id);
  // Remove the view of the remote stream. 
  removeView(id);
  console.log("stream-removed remote-uid: ", id);
});

// Leave the channel
rtc.client.leave(function () {
  // Stop playing the local stream
  rtc.localStream.stop();
  // Close the local stream
  rtc.localStream.close();
  // Stop playing the remote streams and remove the views
  while (rtc.remoteStreams.length > 0) {
    var stream = rtc.remoteStreams.shift();
    var id = stream.getId();
    stream.stop();
    removeView(id);
  }
  console.log("client leaves channel success");
}, function (err) {
  console.log("channel leave failed");
  console.error(err);
});




function addView (id, show) {
  if (!$("#" + id)[0]) {
    $("<div/>", {
      id: "remote_video_panel_" + id,
      class: "video-view",
    }).appendTo("#video")

    $("<div/>", {
      id: "remote_video_" + id,
      class: "video-placeholder",
    }).appendTo("#remote_video_panel_" + id)

    $("<div/>", {
      id: "remote_video_info_" + id,
      class: "video-profile " + (show ? "" :  "hide"),
    }).appendTo("#remote_video_panel_" + id)

    $("<div/>", {
      id: "video_autoplay_"+ id,
      class: "autoplay-fallback hide",
    }).appendTo("#remote_video_panel_" + id)
  }
}
function removeView (id) {
  if ($("#remote_video_panel_" + id)[0]) {
    $("#remote_video_panel_"+id).remove()
  }
}
票数 0
EN

Stack Overflow用户

发布于 2020-05-23 07:14:28

本地流需要在联接函数中创建、初始化、播放和发布。这是rtc.client.join()函数的更正代码:

代码语言:javascript
复制
rtc.client.join(option.token, option.channel, option.uid, (uid)=>{
console.log("join channel: " + option.channel + " success, uid: " + uid);
rtc.params.uid = uid;
// Create a local stream
rtc.localStream = AgoraRTC.createStream({
  streamID: rtc.params.uid,
  audio: true,
  video: true,
  screen: false,
});


// Initialize the local stream
rtc.localStream.init(function () {
  console.log("init local stream success");
  // play stream with html element id "local_stream"
  rtc.localStream.play("local_stream");
}, function (err) {
  console.error("init local stream failed ", err);
});


// Publish the local stream
rtc.client.publish(rtc.localStream, function (err) {
  console.log("publish failed");
  console.error(err);
});
}, function(err) {
  console.error("client join failed", err);
});

如果有任何进一步的查询,请回我们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61917124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档