Skip to content

Latest commit

 

History

History
99 lines (79 loc) · 2.26 KB

README.md

File metadata and controls

99 lines (79 loc) · 2.26 KB

go-sdp

Go implementation of SDP (Session Description Protocol). No external dependencies.

Build Status Go Report Card GoDoc

Features

  • SDP Encoder/Decoder

Installation

go get github.com/pixelbender/go-sdp/...

SDP Decoding

package main

import (
    "github.com/pixelbender/go-sdp/sdp"
    "fmt"
)

func main() {
    sess, err := sdp.ParseString(`v=0
o=alice 2890844526 2890844526 IN IP4 alice.example.org
s=Example
c=IN IP4 127.0.0.1
t=0 0
a=sendrecv
m=audio 10000 RTP/AVP 0 8
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000`)
    
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(sess.Media[0].Format[0].Name) // prints PCMU
    }
}

SDP Encoding

package main

import (
    "github.com/pixelbender/go-sdp/sdp"
    "fmt"
)

func main() {
    sess := &sdp.Session{
        Origin: &sdp.Origin{
            Username:       "alice",
            Address:        "alice.example.org",
            SessionID:      2890844526,
            SessionVersion: 2890844526,
        },
        Name: "Example",
        Connection: &sdp.Connection{
            Address: "127.0.0.1",
        },
        Media: []*sdp.Media{
            {
                Type:  "audio",
                Port:  10000,
                Proto: "RTP/AVP",
                Format: []*sdp.Format{
                    {Payload: 0, Name: "PCMU", ClockRate: 8000},
                    {Payload: 8, Name: "PCMA", ClockRate: 8000},
                },
            },
        },
        Mode: sdp.SendRecv,
    }
    
    fmt.Println(sess.String())
}

Attributes mapping

Scope Attribute Property
session, media sendrecv, recvonly, sendonly, inactive Session.Mode, Media.Mode
media rtpmap Media.Format
media rtcp-fb Format.Feedback
media fmtp Format.Params

Specifications