【问题标题】:Which codec will be used after sdp exchange in WebRTC?在 WebRTC 中交换 sdp 后将使用哪个编解码器?
【发布时间】:2021-09-29 11:35:10
【问题描述】:

在 WebRTC 视频通话中

A->B提供SDP,表示A支持VP8、VP9和H264

m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 124 125
a=sendrecv
a=rtpmap:96 VP8/90000
...
a=rtpmap:98 VP9/90000
...
a=rtpmap:100 H264/90000

虽然 B->A 回答了 SDP 回答,但也意味着 B 支持 VP8、VP9 和 H264

m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 124 125
a=sendrecv
a=rtpmap:96 VP8/90000
...
a=rtpmap:98 VP9/90000
...
a=rtpmap:100 H264/90000
...

我的问题是在这种情况下,将使用哪种编解码器? A 或 B 如何知道另一个选择? 谢谢

【问题讨论】:

    标签: webrtc rtp sdp


    【解决方案1】:

    答案可以在 RFC3264 中找到。

    Section 5.1:

    如果列出了多种格式,则 意味着要约人能够利用任何这些 会议期间的格式。换句话说,回答者可能会改变 会议中间的格式,利用任何 列出的格式,而不发送新的报价。

    提供者将在 m 行中按优先顺序列出支持的编解码器。回答者很可能会尊重该偏好,但没有义务这样做。见Section 6.1:

    虽然回答者可以按照他们想要的顺序列出格式 偏好,建议除非有特定原因, 回答者列表格式与它们相同的相对顺序 出现在报价中。

    Section 7:

    当提供者收到答复时,它可以在 接受的流(假设它被列为 sendrecv 或 recvonly 在 答案)。它必须使用答案中列出的媒体格式发送, 它应该使用答案中列出的第一种媒体格式 确实发送。

    简而言之:提供者和回答者很可能会使用回答者 m 行中的第一个编解码器,这可能会在媒体会话期间发生变化。

    【讨论】:

      【解决方案2】:

      B 表示它更喜欢 96,即 VP8,因为它在 m= 行格式中首先列出。

      https://webrtc.github.io/samples/src/content/peerconnection/change-codecs/ 有一个示例,可让您更改编解码器的顺序并检查结果。

      【讨论】:

        猜你喜欢
        • 2018-12-28
        • 2016-12-06
        • 2019-03-15
        • 1970-01-01
        • 2017-06-26
        • 2018-07-01
        • 1970-01-01
        • 2014-07-06
        • 2016-11-20
        相关资源
        最近更新 更多