当前位置: 首页 > 工具软件 > SIP.js > 使用案例 >

Sipjs与onsip,基于webrtc的web端视频通话

怀晋
2023-12-01

全文参考SIP.JS官方文档https://sipjs.com/;
以及一个博主( 月下家宴)的博客
https://blog.csdn.net/Java_lilin/article/details/88417686

代码很简单,大部分拷贝博主( 月下家宴)的博客的代码,他的代码就算一个Demo了。
讲一下我的思路
1、首先安装好Sip.js,让我们可以使用它。

2、然后我们就可以创建一个账号一样的userAgent ,作为拨打端
var userAgent = new UA(config);
config即代表你的具体账号名,可以用freeswitch的账号,我用的是SIP.JS自带服务器OnSip注册的账号。

3、作为邀请人拨打视频即
userAgent.invite(‘bob@example.com’);

4、被邀请到的人接到邀请后怎么反应呢:
userAgent.on(‘invite’,function (session) => session.accept());
function (session)里面写具体判断;
并在里面加入判断视频流,让两个实现双方互相视频

注意:实现两个vedio都有播放要用accept而不是trackAdded,不然localStream或者remoteStream的active一直为false

  xsipsession.on('accepted', function() {
                    var pc = session.sessionDescriptionHandler.peerConnection;
                    console.log(pc);
                    // Gets remote tracks
                    var remoteStream = new MediaStream();
                    pc.getReceivers().forEach(function(receiver) {
                        remoteStream.addTrack(receiver.track);
                    });
                    console.log('remoteStream:',remoteStream);
                    remoteVideo.srcObject = remoteStream;
                    remoteVideo.play();
                    if(pc.getSenders() ){
                    var localStream = new MediaStream();
                    pc.getSenders().forEach(function(sender) {
                            localStream.addTrack(sender.track);
                        });
                    console.log('localStream',localStream);
                    document.getElementById('localVideo').srcObject = localStream;
                    document.getElementById('localVideo').play();
                    }

 

5、最后是挂断:
sipsession.terminate();
sipsession是接电话那一端的session而不是打电话这端的!!!

 类似资料: