diff --git a/README.md b/README.md
index 014c273b..c1258cbc 100644
--- a/README.md
+++ b/README.md
@@ -172,6 +172,8 @@ make run
 Related projects
 * https://github.com/aler9/gortsplib
 * https://github.com/flaviostutz/rtsp-relay
+* https://github.com/pion/sdp (SDP library used internally)
+* https://github.com/pion/rtcp (RTCP library used internally)
 
 IETF Standards
 * RTSP 1.0 https://tools.ietf.org/html/rfc2326
diff --git a/go.mod b/go.mod
index be8c2979..cedecbaf 100644
--- a/go.mod
+++ b/go.mod
@@ -5,9 +5,9 @@ go 1.13
 require (
 	github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
 	github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
-	github.com/aler9/gortsplib v0.0.0-20200718114958-1d365c8c9369
-	github.com/pion/sdp v1.3.0
-	github.com/stretchr/testify v1.5.1
+	github.com/aler9/gortsplib v0.0.0-20200719094715-6806ec79c031
+	github.com/aler9/sdp/v3 v3.0.0-20200719093237-2c3d108a7436
+	github.com/stretchr/testify v1.6.1
 	gopkg.in/alecthomas/kingpin.v2 v2.2.6
 	gopkg.in/yaml.v2 v2.2.2
 )
diff --git a/go.sum b/go.sum
index 521c4961..e960564f 100644
--- a/go.sum
+++ b/go.sum
@@ -2,16 +2,16 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo
 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
 github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
-github.com/aler9/gortsplib v0.0.0-20200718114958-1d365c8c9369 h1:7t451d8q3yYtUwQM6GqJPCek13BC0yeh0tQqWrxyuck=
-github.com/aler9/gortsplib v0.0.0-20200718114958-1d365c8c9369/go.mod h1:17dcA4Qak5TLqgun8OR0wnSbFQIg4cvYVSf1nbCt+qU=
+github.com/aler9/gortsplib v0.0.0-20200719094715-6806ec79c031 h1:Kb+H1mkbmzbAIcX0++A8kHwdhpQiNe6reFcWNUATcVk=
+github.com/aler9/gortsplib v0.0.0-20200719094715-6806ec79c031/go.mod h1:kBMvjIdOHRjLdV+oT28JD72JUPpJuwxOc9u72GG8GpY=
+github.com/aler9/sdp/v3 v3.0.0-20200719093237-2c3d108a7436 h1:W0iNErWKvSAyJBNVx+qQoyFrWOFVgS6f/WEME/D3EZc=
+github.com/aler9/sdp/v3 v3.0.0-20200719093237-2c3d108a7436/go.mod h1:OnlEK3QI7YtM+ShZWtGajmOHLZ3bjU80AcIS5e34i1U=
 github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA=
+github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8=
 github.com/pion/rtcp v1.2.3 h1:2wrhKnqgSz91Q5nzYTO07mQXztYPtxL8a0XOss4rJqA=
 github.com/pion/rtcp v1.2.3/go.mod h1:zGhIv0RPRF0Z1Wiij22pUt5W/c9fevqSzT4jje/oK7I=
-github.com/pion/sdp v1.3.0 h1:21lpgEILHyolpsIrbCBagZaAPj4o057cFjzaFebkVOs=
-github.com/pion/sdp v1.3.0/go.mod h1:ceA2lTyftydQTuCIbUNoH77aAt6CiQJaRpssA4Gee8I=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -19,9 +19,13 @@ github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJy
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
 gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/main.go b/main.go
index d0a9ebc2..c9842a41 100644
--- a/main.go
+++ b/main.go
@@ -10,7 +10,7 @@ import (
 	"os"
 
 	"github.com/aler9/gortsplib"
-	"github.com/pion/sdp"
+	"github.com/aler9/sdp/v3"
 	"gopkg.in/alecthomas/kingpin.v2"
 )
 
diff --git a/server-client.go b/server-client.go
index d3aba69e..0424d8bb 100644
--- a/server-client.go
+++ b/server-client.go
@@ -11,7 +11,7 @@ import (
 	"time"
 
 	"github.com/aler9/gortsplib"
-	"github.com/pion/sdp"
+	"github.com/aler9/sdp/v3"
 )
 
 const (
@@ -405,7 +405,7 @@ func (c *serverClient) handleRequest(req *gortsplib.Request) bool {
 		}
 
 		sdpParsed := &sdp.SessionDescription{}
-		err = sdpParsed.Unmarshal(string(req.Content))
+		err = sdpParsed.Unmarshal(req.Content)
 		if err != nil {
 			c.writeResError(req, gortsplib.StatusBadRequest, fmt.Errorf("invalid SDP: %s", err))
 			return false
diff --git a/source.go b/source.go
index f78514a1..9e6b5d3f 100644
--- a/source.go
+++ b/source.go
@@ -8,7 +8,7 @@ import (
 	"time"
 
 	"github.com/aler9/gortsplib"
-	"github.com/pion/sdp"
+	"github.com/aler9/sdp/v3"
 )
 
 const (
diff --git a/utils.go b/utils.go
index 69be41aa..f9895f40 100644
--- a/utils.go
+++ b/utils.go
@@ -6,7 +6,7 @@ import (
 	"strconv"
 
 	"github.com/aler9/gortsplib"
-	"github.com/pion/sdp"
+	"github.com/aler9/sdp/v3"
 )
 
 func parseIpCidrList(in []string) ([]interface{}, error) {
@@ -76,8 +76,11 @@ func (db *doubleBuffer) swap() []byte {
 
 func sdpForServer(tracks []*gortsplib.Track) (*sdp.SessionDescription, []byte) {
 	sout := &sdp.SessionDescription{
-		SessionName: "Stream",
-		Origin: sdp.Origin{
+		SessionName: func() *sdp.SessionName {
+			ret := sdp.SessionName("Stream")
+			return &ret
+		}(),
+		Origin: &sdp.Origin{
 			Username:       "-",
 			NetworkType:    "IN",
 			AddressType:    "IP4",
@@ -118,6 +121,6 @@ func sdpForServer(tracks []*gortsplib.Track) (*sdp.SessionDescription, []byte) {
 		sout.MediaDescriptions = append(sout.MediaDescriptions, mout)
 	}
 
-	bytsout := []byte(sout.Marshal())
+	bytsout, _ := sout.Marshal()
 	return sout, bytsout
 }