client: add Start2; deprecate Start (#801)

This commit is contained in:
Alessandro Ros
2025-07-05 13:02:45 +02:00
committed by GitHub
parent 616fa7ea89
commit 9c1011567a
32 changed files with 278 additions and 144 deletions

View File

@@ -355,6 +355,14 @@ type OnPacketRTCPAnyFunc func(*description.Media, rtcp.Packet)
// Client is a RTSP client.
type Client struct {
//
// Target
//
// Scheme. Either "rtsp" or "rtsps".
Scheme string
// Host and port.
Host string
//
// RTSP parameters (all optional)
//
@@ -444,8 +452,6 @@ type Client struct {
receiverReportPeriod time.Duration
checkTimeoutPeriod time.Duration
scheme string
host string
ctx context.Context
ctxCancel func()
state clientState
@@ -497,7 +503,16 @@ type Client struct {
}
// Start initializes the connection to a server.
//
// Deprecated: replaced by Start2.
func (c *Client) Start(scheme string, host string) error {
c.Scheme = scheme
c.Host = host
return c.Start2()
}
// Start2 initializes the connection to a server.
func (c *Client) Start2() error {
// RTSP parameters
if c.ReadTimeout == 0 {
c.ReadTimeout = 10 * time.Second
@@ -592,8 +607,6 @@ func (c *Client) Start(scheme string, host string) error {
ctx, ctxCancel := context.WithCancel(context.Background())
c.scheme = scheme
c.host = host
c.ctx = ctx
c.ctxCancel = ctxCancel
c.checkTimeoutTimer = emptyTimer()
@@ -632,7 +645,10 @@ func (c *Client) StartRecording(address string, desc *description.Session) error
return err
}
err = c.Start(u.Scheme, u.Host)
c.Scheme = u.Scheme
c.Host = u.Host
err = c.Start2()
if err != nil {
return err
}
@@ -1062,29 +1078,29 @@ func (c *Client) connOpen() error {
return nil
}
if c.scheme != "rtsp" && c.scheme != "rtsps" {
return liberrors.ErrClientUnsupportedScheme{Scheme: c.scheme}
if c.Scheme != "rtsp" && c.Scheme != "rtsps" {
return liberrors.ErrClientUnsupportedScheme{Scheme: c.Scheme}
}
dialCtx, dialCtxCancel := context.WithTimeout(c.ctx, c.ReadTimeout)
defer dialCtxCancel()
nconn, err := c.DialContext(dialCtx, "tcp", canonicalAddr(&base.URL{
Scheme: c.scheme,
Host: c.host,
Scheme: c.Scheme,
Host: c.Host,
}))
if err != nil {
return err
}
if c.scheme == "rtsps" {
if c.Scheme == "rtsps" {
tlsConfig := c.TLSConfig
if tlsConfig == nil {
tlsConfig = &tls.Config{}
}
tlsConfig.ServerName = (&base.URL{
Scheme: c.scheme,
Host: c.host,
Scheme: c.Scheme,
Host: c.Host,
}).Hostname()
nconn = tls.Client(nconn, tlsConfig)
@@ -1352,7 +1368,7 @@ func (c *Client) doDescribe(u *base.URL) (*description.Session, *base.Response,
return nil, nil, err
}
if c.scheme == "rtsps" && ru.Scheme != "rtsps" {
if c.Scheme == "rtsps" && ru.Scheme != "rtsps" {
return nil, nil, fmt.Errorf("connection cannot be downgraded from RTSPS to RTSP")
}
@@ -1360,8 +1376,8 @@ func (c *Client) doDescribe(u *base.URL) (*description.Session, *base.Response,
ru.User = u.User
}
c.scheme = ru.Scheme
c.host = ru.Host
c.Scheme = ru.Scheme
c.Host = ru.Host
return c.doDescribe(ru)
}
@@ -1435,12 +1451,12 @@ func (c *Client) doAnnounce(u *base.URL, desc *description.Session) (*base.Respo
return nil, err
}
announceData, err := generateAnnounceData(desc, c.scheme == "rtsps")
announceData, err := generateAnnounceData(desc, c.Scheme == "rtsps")
if err != nil {
return nil, err
}
err = prepareForAnnounce(desc, announceData, c.scheme == "rtsps")
err = prepareForAnnounce(desc, announceData, c.Scheme == "rtsps")
if err != nil {
return nil, err
}
@@ -1535,13 +1551,13 @@ func (c *Client) doSetup(
// use transport from config, secure flag from server
case c.Transport != nil:
transport = *c.Transport
th.Secure = medi.Secure && c.scheme == "rtsps"
th.Secure = medi.Secure && c.Scheme == "rtsps"
// try UDP if unencrypted or secure is supported by server, otherwise try TCP
default:
th.Secure = medi.Secure && c.scheme == "rtsps"
th.Secure = medi.Secure && c.Scheme == "rtsps"
if th.Secure || c.scheme == "rtsp" {
if th.Secure || c.Scheme == "rtsp" {
transport = TransportUDP
} else {
transport = TransportTCP
@@ -1560,7 +1576,7 @@ func (c *Client) doSetup(
switch transport {
case TransportUDP, TransportUDPMulticast:
if c.scheme == "rtsps" && !medi.Secure {
if c.Scheme == "rtsps" && !medi.Secure {
cm.close()
return nil, fmt.Errorf("server does not support secure UDP")
}

View File

@@ -82,7 +82,10 @@ func readAll(c *Client, ur string, cb func(*description.Media, format.Format, *r
return err
}
err = c.Start(u.Scheme, u.Host)
c.Scheme = u.Scheme
c.Host = u.Host
err = c.Start2()
if err != nil {
return err
}
@@ -604,7 +607,12 @@ func TestClientPlay(t *testing.T) {
require.NoError(t, err2)
}()
u, err := base.ParseURL(ca.scheme + "://" + listenIP + ":8554/test/stream?param=value")
require.NoError(t, err)
c := Client{
Scheme: u.Scheme,
Host: u.Host,
TLSConfig: &tls.Config{InsecureSkipVerify: true},
Transport: func() *Transport {
switch ca.transport {
@@ -623,10 +631,7 @@ func TestClientPlay(t *testing.T) {
}(),
}
u, err := base.ParseURL(ca.scheme + "://" + listenIP + ":8554/test/stream?param=value")
require.NoError(t, err)
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()
@@ -1029,14 +1034,16 @@ func TestClientPlayPartial(t *testing.T) {
packetRecv := make(chan struct{})
c := Client{
Transport: transportPtr(TransportTCP),
}
u, err := base.ParseURL("rtsp://" + listenIP + ":8554/teststream")
require.NoError(t, err)
err = c.Start(u.Scheme, u.Host)
c := Client{
Scheme: u.Scheme,
Host: u.Host,
Transport: transportPtr(TransportTCP),
}
err = c.Start2()
require.NoError(t, err)
defer c.Close()
@@ -3904,7 +3911,12 @@ func TestClientPlayBackChannel(t *testing.T) {
require.NoError(t, err2)
}()
u, err := base.ParseURL("rtsp://localhost:8554/teststream")
require.NoError(t, err)
c := Client{
Scheme: u.Scheme,
Host: u.Host,
RequestBackChannels: true,
Transport: func() *Transport {
if transport == "tcp" {
@@ -3916,10 +3928,7 @@ func TestClientPlayBackChannel(t *testing.T) {
receiverReportPeriod: 750 * time.Millisecond,
}
u, err := base.ParseURL("rtsp://localhost:8554/teststream")
require.NoError(t, err)
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()

View File

@@ -80,7 +80,10 @@ func record(c *Client, ur string, medias []*description.Media, cb func(*descript
return err
}
err = c.Start(u.Scheme, u.Host)
c.Scheme = u.Scheme
c.Host = u.Host
err = c.Start2()
if err != nil {
return err
}

View File

@@ -86,10 +86,12 @@ func TestClientTLSSetServerName(t *testing.T) {
require.NoError(t, err)
c := Client{
Scheme: u.Scheme,
Host: u.Host,
TLSConfig: &tls.Config{},
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()
@@ -103,9 +105,12 @@ func TestClientClose(t *testing.T) {
u, err := base.ParseURL("rtsp://localhost:8554/teststream")
require.NoError(t, err)
c := Client{}
c := Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
c.Close()
@@ -162,9 +167,12 @@ func TestClientCloseDuringRequest(t *testing.T) {
u, err := base.ParseURL("rtsp://localhost:8554/teststream")
require.NoError(t, err)
c := Client{}
c := Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
optionsDone := make(chan struct{})
@@ -232,9 +240,12 @@ func TestClientSession(t *testing.T) {
u, err := base.ParseURL("rtsp://localhost:8554/stream")
require.NoError(t, err)
c := Client{}
c := Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()
@@ -309,9 +320,12 @@ func TestClientAuth(t *testing.T) {
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/stream")
require.NoError(t, err)
c := Client{}
c := Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()
@@ -385,9 +399,12 @@ func TestClientCSeq(t *testing.T) {
u, err := base.ParseURL("rtsp://localhost:8554/teststream")
require.NoError(t, err)
c := Client{}
c := Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()
@@ -448,9 +465,12 @@ func TestClientDescribeCharset(t *testing.T) {
u, err := base.ParseURL("rtsp://localhost:8554/teststream")
require.NoError(t, err)
c := Client{}
c := Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()
@@ -534,9 +554,12 @@ func TestClientReplyToServerRequest(t *testing.T) {
u, err := base.ParseURL("rtsp://localhost:8554/stream")
require.NoError(t, err)
c := Client{}
c := Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()
@@ -599,9 +622,12 @@ func TestClientRelativeContentBase(t *testing.T) {
u, err := base.ParseURL("rtsp://localhost:8554/teststream")
require.NoError(t, err)
c := Client{}
c := Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
require.NoError(t, err)
defer c.Close()

View File

@@ -47,18 +47,20 @@ func findG711BackChannel(desc *description.Session) (*description.Media, *format
}
func main() {
c := gortsplib.Client{
RequestBackChannels: true,
}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
RequestBackChannels: true,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -46,16 +46,19 @@ func saveToFile(img image.Image) error {
}
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -23,16 +23,19 @@ import (
// apt install -y libavcodec-dev libswscale-dev gcc pkg-config
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -17,16 +17,19 @@ import (
// 3. decode the G711 stream into audio samples.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -18,16 +18,19 @@ import (
// 3. save the content of these streams in a file in MPEG-TS format.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/stream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -18,16 +18,19 @@ import (
// 3. save the content of the format in a file in MPEG-TS format.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -46,16 +46,19 @@ func saveToFile(img image.Image) error {
}
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -23,16 +23,19 @@ import (
// apt install -y libavcodec-dev libswscale-dev gcc pkg-config
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -18,16 +18,19 @@ import (
// 3. save the content of the format in a file in MPEG-TS format.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -46,16 +46,19 @@ func saveToFile(img image.Image) error {
}
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -23,16 +23,19 @@ import (
// apt install -y libavcodec-dev libswscale-dev gcc pkg-config
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -16,16 +16,19 @@ import (
// 3. get LPCM samples of that format.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -21,16 +21,19 @@ import (
// 4. decode JPEG images into RGBA frames.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -17,16 +17,19 @@ import (
// 3. save the content of the format in a file in MPEG-TS format.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -16,16 +16,19 @@ import (
// 3. get access units of that format.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -17,16 +17,19 @@ import (
// 3. save the content of the format in a file in MPEG-TS format.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -16,16 +16,19 @@ import (
// 3. get Opus packets of that format.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -22,16 +22,19 @@ import (
// apt install -y libavcodec-dev libswscale-dev gcc pkg-config
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -22,16 +22,19 @@ import (
// apt install -y libavcodec-dev libswscale-dev gcc pkg-config
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -18,8 +18,16 @@ import (
// 2. connect to a RTSP server and read all medias on a path.
func main() {
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
// Client allows to set additional client options
c := &gortsplib.Client{
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
// transport protocol (UDP, Multicast or TCP). If nil, it is chosen automatically
Transport: nil,
// timeout of read operations
@@ -28,14 +36,8 @@ func main() {
WriteTimeout: 10 * time.Second,
}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -20,16 +20,19 @@ import (
// 4. repeat.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -17,16 +17,19 @@ import (
// 3. Get PTS and NTP of incoming RTP packets.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -17,16 +17,19 @@ import (
// 3. re-publish all medias on another path.
func main() {
reader := gortsplib.Client{}
// parse source URL
sourceURL, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
reader := gortsplib.Client{
Scheme: sourceURL.Scheme,
Host: sourceURL.Host,
}
// connect to the server
err = reader.Start(sourceURL.Scheme, sourceURL.Host)
err = reader.Start2()
if err != nil {
panic(err)
}

View File

@@ -17,16 +17,19 @@ import (
// 2. read all media streams on a path.
func main() {
c := gortsplib.Client{}
// parse URL
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mystream")
if err != nil {
panic(err)
}
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = c.Start(u.Scheme, u.Host)
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -13,14 +13,17 @@ import (
// 2. get and print informations about medias published on a path.
func main() {
c := gortsplib.Client{}
u, err := base.ParseURL("rtsp://myuser:mypass@localhost:8554/mypath")
if err != nil {
panic(err)
}
err = c.Start(u.Scheme, u.Host)
c := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
err = c.Start2()
if err != nil {
panic(err)
}

View File

@@ -48,18 +48,20 @@ func (c *client) run() {
}
func (c *client) read() error {
rc := gortsplib.Client{
RequestBackChannels: true,
}
// parse URL
u, err := base.ParseURL(existingStream)
if err != nil {
return err
}
rc := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
RequestBackChannels: true,
}
// connect to the server
err = rc.Start(u.Scheme, u.Host)
err = rc.Start2()
if err != nil {
return err
}

View File

@@ -35,16 +35,19 @@ func (c *client) run() {
}
func (c *client) read() error {
rc := gortsplib.Client{}
// parse URL
u, err := base.ParseURL(existingStream)
if err != nil {
return err
}
rc := gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
}
// connect to the server
err = rc.Start(u.Scheme, u.Host)
err = rc.Start2()
if err != nil {
return err
}

View File

@@ -156,10 +156,12 @@ func TestClientVsServer(t *testing.T) {
require.NoError(t, err)
reader := &gortsplib.Client{
Scheme: u.Scheme,
Host: u.Host,
TLSConfig: &tls.Config{InsecureSkipVerify: true},
Transport: &readerProto,
}
err = reader.Start(u.Scheme, u.Host)
err = reader.Start2()
require.NoError(t, err)
defer reader.Close()