美文网首页
medooze media server node

medooze media server node

作者: shuinan | 来源:发表于2020-10-22 15:01 被阅读0次

PeerConnectionServer

的构造函数

一个Endpoint有多个transport(例如每次sub一个),但是只有一个RTPBundleTransport(bundle:native层传输组织对象)

Endpoint :

this.bundle = new Native.RTPBundleTransport();

//Start it

this.bundle.Init();

Transport:

*传输表示通过单个DTLS会话在本地ICE候选者和远程ICE候选者集合之间的连接。

*传输对象将在内部分配本地端的ICE和DTLS信息,以便将其单独发送到远程端并建立连接。

*每个传输都有一组传入和传出流,这些流允许向远程对等方发送或接收RTP流。

*您必须按照远程SDP上的指示创建传入流,因为任何具有未知ssrc的传入RTP都将被忽略。

*创建输出流时,传输将在内部为不同的RTP流分配ssrc,以避免冲突。您将能够从流对象中检索该信息,以便能够在发送到远程端的SDP上宣布它们。

*为了确定如何路由流,必须将一种传输的传出流附加到其他(或相同)传输的传入流上。

bundle:  主要处理: iceTransport;  candidate

this.connection = bundle.AddICETransport(this.username,properties);

        填上各属性,创建DTLSICETransport

         std::shared_ptr<DTLSICETransport> transport = std::make_shared<DTLSICETransport>(sender, loop);

        if (useDtls) {

            ret = transport->SetRemoteCryptoDTLS(dtls.GetProperty("setup"),dtls.GetProperty("hash"),dtls.GetProperty("fingerprint"));

        } else if (useSdes) {

            std::string localKey(crypto.GetProperty("localKey"));

            std::string remoteKey(crypto.GetProperty("remoteKey"));

            ret = transport->SetCryptoSDES(localKey, remoteKey, crypto.GetProperty("suite"));

       }

        auto connection = std::make_shared<Connection>(username,transport,properties.GetProperty("disableSTUNKeepAlive", false));

        transport->Start();

this.transport = this.connection.transport;  收发的具体情况

底层的 RTPBundleTransport

RTPBundleTransport::Init(int port)  在指定的端口收发数据, 后面的收发数据会用到

        int RTPBundleTransport::Send(const ICERemoteCandidate* candidate, Packet&& buffer)

            loop.Send(socket,candidate->GetIPAddress(),candidate->GetPort(),std::move(buffer));

具体的icetransport等都是通过这个Send函数来发送数据的

定时器里面,处理掉和候选人的连接 SendBindingRequest(connection.get(), candidate.get());

参考: https://cloud.tencent.com/developer/article/1608860

相关文章

网友评论

      本文标题:medooze media server node

      本文链接:https://www.haomeiwen.com/subject/wiaumktx.html