声网Agora web-RTC监听订阅对端音视频轨无效

声网web-RTC与对端都在频道内后,web本端如何都无法订阅到对端(Linux服务端)的音视频轨道,具体代码如下:

1、加入RTC并监听频道内用户的发布和取消发布

async function joinRTC() {
  clienRTC.on("user-published", handleUserPublished);
  clienRTC.on("user-unpublished", handleUserUnpublished);
    try {
      [options.destRtcUid, localTracks.audioTrack, localTracks.videoTrack] = await Promise.all([
        clienRTC.join(options.appId, options.rtcChannelName, options.destRtcToken || null, Number(options.destRtcUid) || null),
        AgoraRTC.createMicrophoneAudioTrack({
          encoderConfig: {
            sampleRate: 48000,
            stereo: true,
            bitrate: 128,
          },
        }),
        AgoraRTC.createCameraVideoTrack({
          encoderConfig: {
            width: 360,
            // 支持指定一个范围和参考值,具体配置参考相关 API 文档
            height: {
              ideal: 640,
              min: 640,
              max: 640
            },
            frameRate: 24,
            bitrateMin: 800,
            bitrateMax: 1000,
          },
          optimizationMode: "motion"
        })
      ]);
      await clienRTC.publish(Object.values(localTracks));
      localTracks.videoTrack.play("myself_vedio");
      console.log("发布本地音视频成功");
      $("#leave").show();
    } catch (error) {
      try {
        localTracks.audioTrack = await AgoraRTC.createMicrophoneAudioTrack();
        await clienRTC.publish(localTracks.audioTrack);
      } catch (audioErr) {
        console.log("摄像头与麦克风设备不可用,无法建立通话")
      }
    }
}

2、监听到订阅对端音视频轨道

function handleUserPublished(user, mediaType) {
  const id = user.uid;
  remoteUsers[id] = user;
  subscribe(user, mediaType);
}
// subscribe to a remote user
async function subscribe(user, mediaType) {
  const uid = user.uid;
  await clienRTC.subscribe(user, mediaType);
  console.log("subscribe success");
  if (mediaType === 'video') {
    const player = $(`
      <div id="move_bar">
        <div class="vedio_outer" id="otherside_vedio">
          <div class="myself" id="myself_vedio"></div>
          <p id='downMention' style="display:none">请耐心等候对方同意接收音频通话~</p>
          <div class="two_btn videobtn_outer">
            <button id="leave" type="submit" class="btn btn-danger btn-sm leaveCall">挂断</button>
            <button id="downToAudio" class="btn btn-primary btn-sm">音频模式</button>
          </div> 
        </div>
      </div>
    `);
    $("#remote-playerlist").append(player);
    user.videoTrack.play("otherside_vedio");
  }
  if (mediaType === 'audio') {
    user.audioTrack.play();
  }
}

问题所在:这样的代码流程反复对接了后发现并无问题,但是前提在频道内已有对端用户的轨道发布,本端仍然无法触发user-published事件。

解决:说的是两端joinRTC时必须保证uid都是int型,后来web端先改为int后再试就可以了,我是服务端给的string型就直接join的RTC,所以只用修改以下红框处,坑了2天

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
实时音视频(Real-Time Communication,简称RTC)是一种基于网络的通信技术,能够实现实时语音、视频、数据等多媒体信息的传输和交互。RTC技术具有低延迟、高稳定性、高清晰度等特点,广泛应用于在线教育、视频会议、远程医疗、智能家居等领域。 要进行实时音视频RTC实例下载,首先需要找到一款提供RTC功能的软件或开发工具。目前市面上有很多RTC相关的开发框架和SDK,例如WebRTCAgora、腾讯云实时音视频等。这些RTC解决方案一般都提供了相应的官方网站或开发者平台,用户可以在这些平台上找到相应的下载链接。 以WebRTC为例,用户可以通过访问其官方网站(https://webrtc.org/)来获取相关的开发资料和源码。在网站上,用户可以找到WebRTC的GitHub仓库链接,进入该页面后可以下载最新版本的WebRTC代码。 对于Agora和腾讯云实时音视频等厂商,用户可以前往官网(https://www.agora.io/、https://cloud.tencent.com/product/trtc)注册账号并登录,然后下载相应的SDK和开发文档。这些厂商一般会提供多种开发语言的SDK,例如Java、JavaScript、Python等,用户可以根据自己的需求选择适合的版本进行下载和集成。 下载完成后,用户可以按照相应的开发文档进行配置和使用。一般来说,RTC实例下载主要包括 SDK的引入、初始化及配置、创建音视频通道、进行通话或会议等步骤。根据具体的开发需求,用户还可以自定义音视频的编码参数、网络传输协议等。 总之,实时音视频RTC实例下载可以通过找到相应的RTC开发框架或SDK,然后从官方网站或开发者平台获取相应的下载链接,下载完成后按照开发文档进行集成和使用。这样就可以在自己的应用中实现多媒体实时通信的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值