Fix issue #4570 by supporting optional `msid` attribute in WebRTC SDP negotiation, enabling compatibility with libdatachannel and other clients that don't include msid information. SRS failed to negotiate WebRTC connections from libdatachannel clients because: - libdatachannel SDP lacks `a=ssrc:XX msid:stream_id track_id` attributes - SRS required msid information to create track descriptions - According to RFC 8830, the msid attribute and its appdata (track_id) are **optional** If diligently look at the SDP generated by libdatachannel: ``` a=ssrc:42 cname:video-send a=ssrc:43 cname:audio-send ``` It's deliberately missing the `a=ssrc:XX msid:stream_id track_id` line, comparing that with this one: ``` a=ssrc:42 cname:video-send a=ssrc:42 msid:stream_id video_track_id a=ssrc:43 cname:audio-send a=ssrc:43 msid:stream_id audio_track_id ``` In such a situation, to keep compatible with libdatachannel, if no msid line in sdp, SRS comprehensively and consistently uses: * app/stream as stream_id, such as live/livestream * type=video|audio, cname, and ssrc as track_id, such as track-video-video-send-43 |
||
|---|---|---|
| .. | ||
| Architecture.md | ||
| CHANGELOG.md | ||
| Dockers.md | ||
| Features.md | ||
| ffmpeg-logo.png | ||
| ffmpeg-min.png | ||
| PERFORMANCE.md | ||
| README.md | ||
| readme.txt | ||
| Resources.md | ||
| source.200kbps.768x320.flv | ||
| source.flv | ||
| srs-logo.ico | ||
| srs-logo.png | ||