{"id":15479190,"url":"https://github.com/adwpc/rtcsdp","last_synced_at":"2025-04-22T14:51:04.252Z","repository":{"id":144204140,"uuid":"131288850","full_name":"adwpc/rtcsdp","owner":"adwpc","description":"webrtc sdp encoder/decoder by golang.","archived":false,"fork":false,"pushed_at":"2018-04-28T10:50:58.000Z","size":16,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T16:11:11.786Z","etag":null,"topics":["golang","sdp","webrtc"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adwpc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-27T11:40:20.000Z","updated_at":"2025-02-06T06:02:49.000Z","dependencies_parsed_at":"2023-06-19T07:12:17.593Z","dependency_job_id":null,"html_url":"https://github.com/adwpc/rtcsdp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adwpc%2Frtcsdp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adwpc%2Frtcsdp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adwpc%2Frtcsdp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adwpc%2Frtcsdp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adwpc","download_url":"https://codeload.github.com/adwpc/rtcsdp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250263374,"owners_count":21401848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","sdp","webrtc"],"created_at":"2024-10-02T04:20:19.663Z","updated_at":"2025-04-22T14:51:04.231Z","avatar_url":"https://github.com/adwpc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/adwpc/rtcsdp.svg?branch=master)](https://travis-ci.org/adwpc/rtcsdp)\n\n# rtcsdp for golang\n[draft-nandakumar-rtcweb-sdp](https://tools.ietf.org/html/draft-ietf-rtcweb-sdp-09)\n\n\n### Examples\n\n```\npackage main\n\nimport (\n\t\"log\"\n\n\t\"github.com/adwpc/rtcsdp\"\n)\n\nconst chromeOffer = `\nv=0\no=- 2670773066989454674 2 IN IP4 127.0.0.1\ns=-\nt=0 0\na=group:BUNDLE audio video data\na=msid-semantic: WMS X0EclBo2L6ejdTpXYKIgSFxeEeuWSgrgkJxf\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-ufrag:MsTv\na=ice-pwd:ldzjCz3mvZHU7bdmQdvG9E7R\na=ice-options:trickle\na=fingerprint:sha-256 A1:3E:57:FD:06:C7:C2:75:7D:39:C7:EC:2C:94:EB:CD:D3:94:AD:6B:73:F7:68:31:63:B5:4F:81:43:CC:B7:82\na=setup:actpass\na=mid:audio\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\na=sendrecv\na=rtcp-mux\na=rtpmap:111 opus/48000/2\na=rtcp-fb:111 transport-cc\na=fmtp:111 minptime=10;useinbandfec=1\na=rtpmap:103 ISAC/16000\na=rtpmap:104 ISAC/32000\na=rtpmap:9 G722/8000\na=rtpmap:0 PCMU/8000\na=rtpmap:8 PCMA/8000\na=rtpmap:106 CN/32000\na=rtpmap:105 CN/16000\na=rtpmap:13 CN/8000\na=rtpmap:110 telephone-event/48000\na=rtpmap:112 telephone-event/32000\na=rtpmap:113 telephone-event/16000\na=rtpmap:126 telephone-event/8000\na=ssrc:2674873303 cname:k40qiudEPhB/+NLQ\na=ssrc:2674873303 msid:X0EclBo2L6ejdTpXYKIgSFxeEeuWSgrgkJxf 96deaecd-ec83-4324-9eed-51641c51166d\na=ssrc:2674873303 mslabel:X0EclBo2L6ejdTpXYKIgSFxeEeuWSgrgkJxf\na=ssrc:2674873303 label:96deaecd-ec83-4324-9eed-51641c51166d\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 123 127 122 125 107 108 109 124\nc=IN IP4 0.0.0.0\na=rtcp:9 IN IP4 0.0.0.0\na=ice-ufrag:MsTv\na=ice-pwd:ldzjCz3mvZHU7bdmQdvG9E7R\na=ice-options:trickle\na=fingerprint:sha-256 A1:3E:57:FD:06:C7:C2:75:7D:39:C7:EC:2C:94:EB:CD:D3:94:AD:6B:73:F7:68:31:63:B5:4F:81:43:CC:B7:82\na=setup:actpass\na=mid:video\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\na=extmap:4 urn:3gpp:video-orientation\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\na=sendrecv\na=rtcp-mux\na=rtcp-rsize\na=rtpmap:96 VP8/90000\na=rtcp-fb:96 goog-remb\na=rtcp-fb:96 transport-cc\na=rtcp-fb:96 ccm fir\na=rtcp-fb:96 nack\na=rtcp-fb:96 nack pli\na=rtpmap:97 rtx/90000\na=fmtp:97 apt=96\na=rtpmap:98 VP9/90000\na=rtcp-fb:98 goog-remb\na=rtcp-fb:98 transport-cc\na=rtcp-fb:98 ccm fir\na=rtcp-fb:98 nack\na=rtcp-fb:98 nack pli\na=rtpmap:99 rtx/90000\na=fmtp:99 apt=98\na=rtpmap:100 H264/90000\na=rtcp-fb:100 goog-remb\na=rtcp-fb:100 transport-cc\na=rtcp-fb:100 ccm fir\na=rtcp-fb:100 nack\na=rtcp-fb:100 nack pli\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\na=rtpmap:101 rtx/90000\na=fmtp:101 apt=100\na=rtpmap:102 H264/90000\na=rtcp-fb:102 goog-remb\na=rtcp-fb:102 transport-cc\na=rtcp-fb:102 ccm fir\na=rtcp-fb:102 nack\na=rtcp-fb:102 nack pli\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\na=rtpmap:123 rtx/90000\na=fmtp:123 apt=102\na=rtpmap:127 H264/90000\na=rtcp-fb:127 goog-remb\na=rtcp-fb:127 transport-cc\na=rtcp-fb:127 ccm fir\na=rtcp-fb:127 nack\na=rtcp-fb:127 nack pli\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\na=rtpmap:122 rtx/90000\na=fmtp:122 apt=127\na=rtpmap:125 H264/90000\na=rtcp-fb:125 goog-remb\na=rtcp-fb:125 transport-cc\na=rtcp-fb:125 ccm fir\na=rtcp-fb:125 nack\na=rtcp-fb:125 nack pli\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\na=rtpmap:107 rtx/90000\na=fmtp:107 apt=125\na=rtpmap:108 red/90000\na=rtpmap:109 rtx/90000\na=fmtp:109 apt=108\na=rtpmap:124 ulpfec/90000\na=ssrc-group:FID 3122697176 552506581\na=ssrc:3122697176 cname:k40qiudEPhB/+NLQ\na=ssrc:3122697176 msid:X0EclBo2L6ejdTpXYKIgSFxeEeuWSgrgkJxf 8b27d69c-993d-4f36-a529-dbcd15fc7e0e\na=ssrc:3122697176 mslabel:X0EclBo2L6ejdTpXYKIgSFxeEeuWSgrgkJxf\na=ssrc:3122697176 label:8b27d69c-993d-4f36-a529-dbcd15fc7e0e\na=ssrc:552506581 cname:k40qiudEPhB/+NLQ\na=ssrc:552506581 msid:X0EclBo2L6ejdTpXYKIgSFxeEeuWSgrgkJxf 8b27d69c-993d-4f36-a529-dbcd15fc7e0e\na=ssrc:552506581 mslabel:X0EclBo2L6ejdTpXYKIgSFxeEeuWSgrgkJxf\na=ssrc:552506581 label:8b27d69c-993d-4f36-a529-dbcd15fc7e0e\nm=application 9 DTLS/SCTP 5000\nc=IN IP4 0.0.0.0\na=ice-ufrag:MsTv\na=ice-pwd:ldzjCz3mvZHU7bdmQdvG9E7R\na=ice-options:trickle\na=fingerprint:sha-256 A1:3E:57:FD:06:C7:C2:75:7D:39:C7:EC:2C:94:EB:CD:D3:94:AD:6B:73:F7:68:31:63:B5:4F:81:43:CC:B7:82\na=setup:actpass\na=mid:data\na=sctpmap:5000 webrtc-datachannel 1024\n`\n\nfunc main() {\n\tlog.Println(\"==================decode======================\")\n\n\tif sdp, err := sdp.NewSDP(chromeOffer); err == nil {\n\t\tlog.Println(\"==================encode======================\")\n\t\tlog.Println(sdp.Encode())\n\t} else {\n\t\tlog.Println(err.Error())\n\t}\n}\n\n```\n\n### tested sdp\n- [x] chrome_avd.sdp\n\t- audio\n\t- video\n\t- data\n\t\n- [x] firefox_av.sdp\n\t- audio\n\t- video\n- [x] janus_av.sdp\n\t- audio\n\t- video\n\n\t\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadwpc%2Frtcsdp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadwpc%2Frtcsdp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadwpc%2Frtcsdp/lists"}