接收WebRTC音频和视频的最小SDP答案是什么?

接收WebRTC音频和视频的最小SDP答案是什么?,webrtc,rtp,sdp,Webrtc,Rtp,Sdp,我目前正在尝试将WebRTC MediaStreams流式传输到我的服务器,在那里它将被录制。遗憾的是,没有本机JavaWebRTC端点,所以我想自己实现这个特例 现在,在提供sdp和我的服务器的公共IP的情况下,如何构造浏览器启动SRTP所需的DTLS握手所需的最小sdp响应 如果你想用一个具体的例子来解释,请使用下面的sdp服务(源于chrome的单一视频媒体流),并假设服务器的公共IP为“12.34.56.78”: 您需要使用ip:端口回答问题,您将在该端口接收媒体,并仅添加一个具有该信息

我目前正在尝试将WebRTC MediaStreams流式传输到我的服务器,在那里它将被录制。遗憾的是,没有本机JavaWebRTC端点,所以我想自己实现这个特例

现在,在提供sdp和我的服务器的公共IP的情况下,如何构造浏览器启动SRTP所需的DTLS握手所需的最小sdp响应

如果你想用一个具体的例子来解释,请使用下面的sdp服务(源于chrome的单一视频媒体流),并假设服务器的公共IP为“12.34.56.78”:


您需要使用ip:端口回答问题,您将在该端口接收媒体,并仅添加一个具有该信息的候选。 在下面的示例中,让端口为22222

您可以筛选要使用的编解码器。我选择了VP8。请注意,您需要更新m=视频线,以仅包括正确的有效负载类型(VP8为100)

如果不支持扩展,还应该删除它们(a=extmap…)

如果您不支持捆绑(并且您不需要它进行视频通话),则需要删除a=组。。。a=中间。。。属性。同样在这种情况下,您不需要生成ssrc标记,所以您只需删除a=ssrc。。。还有

您收到了setup:actpass,因此您需要回答setup:passive或setup:active,具体取决于您是要启动连接检查还是让连接检查启动

好的,到目前为止,你只是删除了一些非强制性的内容。现在需要将零件添加到SDP。您需要生成ice凭据并将其添加到响应中

最后,您需要在服务器上拥有自己的证书(可以是自签名证书),并在SDP上共享指纹

v=0
o=- 6548769878907123 4 IN IP4 127.0.0.1
s=-
t=0 0
m=video 22222 RTP/SAVPF 100
c=IN IP4 12.34.56.78
a=rtcp:22222 IN IP4 12.34.56.78
a=candidate:234234234 1 udp 768678678678 12.34.56.78 22222 typ host generation 0
a=ice-ufrag:yourgeneratedufrag
a=ice-pwd:yourgeneratedicepw
a=ice-options:google-ice
a=fingerprint:sha-256 YOUR_CERTIFICATE_FINGERPRINT_GOES_HERE
a=setup:passive
a=sendrecv
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
请注意,您需要在DTLS握手之前处理并生成ICE(经过身份验证的STUN请求)


所以,这不是一项简单的任务……

我不认为这会像你想象的那么容易。您必须建立一个ICE连接。似乎有几个库可以帮助您实现这一点。您应该插入由此类库创建的ICE候选对象


对于SDP的转换,您可能需要看一看我的WebRTC Echo服务器中的一些代码,它执行类似的操作:

虽然您的示例中有具有相同IP的候选,但更一般的情况是,不同的候选来自ICE环境的不同部分

申请IP的2名候选人 2名来自STUN服务器的候选人 来自TURN服务器的2名候选人

通过另一个来锁定其中一个是基于您从媒体服务器端提出的等效设置,然后ICE数据包握手发生。基本上,这些是在端点锁定到能够使用一个特定集合建立双向握手的端点之前应尝试的特定路径。介质/RTP应仅在该特定路径中开始流动


先前的回答是一个正常的SDP报价回答案例,不再是涉及ICE的案例

当我问这个问题时,我认为可以简单地构建一个ICE候选服务器,其中包含众所周知的公共IP服务器,ubt。从那时起,我已经阅读了有关交换stun消息以确保双向链接的信息,这在这里不是必需的,但由规范强制执行:/Will查看您的示例
v=0
o=- 6548769878907123 4 IN IP4 127.0.0.1
s=-
t=0 0
m=video 22222 RTP/SAVPF 100
c=IN IP4 12.34.56.78
a=rtcp:22222 IN IP4 12.34.56.78
a=candidate:234234234 1 udp 768678678678 12.34.56.78 22222 typ host generation 0
a=ice-ufrag:yourgeneratedufrag
a=ice-pwd:yourgeneratedicepw
a=ice-options:google-ice
a=fingerprint:sha-256 YOUR_CERTIFICATE_FINGERPRINT_GOES_HERE
a=setup:passive
a=sendrecv
a=rtcp-mux
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb