Commit Graph

160 Commits

Author SHA1 Message Date
Alessandro Ros
c56eee37f8 do not listen on IPv6 when host is 0.0.0.0 (#240)
(https://github.com/aler9/mediamtx/issues/1665)
2023-04-10 22:42:19 +02:00
Alessandro Ros
2a91a68121 update docs (#232) 2023-04-09 17:01:38 +02:00
Alessandro Ros
1694d9086d use normalized trackID in place of mediaUUID (#226)
This is needed to support clients like the Grandstream GXV3500.

Fixes #190
2023-04-07 12:38:10 +02:00
Alessandro Ros
2fbba142cc add OnTransportSwitch, OnPacketLost, OnDecodeError to server and client (#225)
These new hooks replace the generic hooks Log() and OnWarning().
2023-04-04 17:10:37 +02:00
Alessandro Ros
af3ed2bd83 merge format and formatdecenc into formats (#222) 2023-04-01 13:23:16 +02:00
Alessandro Ros
71ce818c97 remove deprecated entities (#220) 2023-03-31 12:42:50 +02:00
Alessandro Ros
04f5a4041c change owner (#217) 2023-03-31 12:34:07 +02:00
Alessandro Ros
d369d215c2 client: replace OnWarning with Log (#208) 2023-03-19 18:15:33 +01:00
Alessandro Ros
253be9913e update docs (#203) 2023-03-13 18:53:36 +01:00
aler9
1d915dcc81 change error message 2023-01-23 13:52:11 +01:00
Alessandro Ros
a2d6ce8af6 replace OnDecodeError with OnWarning (#177) 2023-01-23 12:54:57 +01:00
Alessandro Ros
14fcde1c69 client: call OnDecodeError() during protocol switch from UDP to TCP (#176) 2023-01-23 12:41:14 +01:00
aler9
e3f21fc59f client: send TEARDOWN even when PLAY or RECORD have not been sent yet 2023-01-19 10:31:28 +01:00
Alessandro Ros
71bd86cff9 client: improve automatic protocol switching (#169)
(https://github.com/aler9/rtsp-simple-server/issues/1105)

when a camera receives a UDP request and replies with a TCP response,
switch protocol from UDP to TCP.
2023-01-19 09:41:24 +01:00
aler9
bf12e12afd client: decrease security issues with AnyPortEnable
When AnyPortEnable is true, store the port of the first incoming packet
and check that following packets use the same port
2023-01-07 11:06:10 +01:00
aler9
5a2ea9cf9c partially revert cabfcd6 2022-12-22 20:36:41 +01:00
aler9
cabfcd627b client: do not override media controls inside Announce()
this fixes the client-read-republish example and allows users to set
their own media controls.

Function medias.SetControls() is provided in order to automatically set
media controls and must be called manually.
2022-12-22 18:54:09 +01:00
aler9
ffe8c87c38 fix overriding of previously-received RTP packets that leaded to crashes
RTP packets were previously take from a buffer pool. This was messing
up the Client, since that buffer pool was used by multiple routines at
once, and was probably messing up the Server too, since packets can be
pushed to different queues and there's no guarantee that these queues
have an overall size less than ReadBufferCount.

This buffer pool is removed; this decreases performance but avoids bugs.
2022-12-19 13:51:49 +01:00
aler9
38b24b8e26 rename 'track' references into 'format' 2022-12-13 18:06:41 +01:00
aler9
256877086b merge serverWriter and clientWriter 2022-12-11 22:54:16 +01:00
Alessandro Ros
a1396206b5 convert Tracks into Medias and Formats (#155)
* split tracks from medias

* move tracks into dedicated package

* move media into dedicated package

* edit Medias.Marshal() in order to return SDP

* add medias.Find() and simplify examples

* improve coverage

* fix rebase errors

* replace TrackIDs with MediaIDs

* implement media-specific and track-specific callbacks for reading RTCP and RTP packets

* rename publish into record, read into play

* add v2 tag

* rename tracks into formats
2022-12-11 22:03:22 +01:00
aler9
fa95f5a86b add Client.SetupAll() 2022-12-11 14:25:35 +01:00
aler9
99855bd3a2 allow invalid RTCP packets in both client and server
(https://github.com/aler9/rtsp-simple-server/issues/1085)

Invalid RTCP packets, in both server and client, do not trigger a fatal
error anymore but they're just blocked. OnDecodeError() is called in
order to emit a warning.
2022-12-09 12:48:33 +01:00
aler9
d521a785c4 support tracks without clock rate 2022-11-27 21:17:48 +01:00
aler9
9f5ab03742 headers: simplify usage of Range 2022-11-20 11:33:49 +01:00
Alessandro Ros
7951b2e4af allow to set NTP of outgoing packets in both client and server (#148) 2022-11-14 16:55:40 +01:00
aler9
12c8845fef client: add variables to store received and sent bytes 2022-11-10 22:15:34 +01:00
aler9
32f611270c add option to disable automatic RTCP sender reports (#111) 2022-11-02 17:32:42 +01:00
Alessandro Ros
7a4c7d6d66 remove h264 decoding and re-encoding (#144)
* stop re-encoding H264

* stop decoding H264

* improve tests
2022-11-02 14:38:05 +01:00
aler9
58bc92133a client: generate RTCP sender reports when publishing with TCP too 2022-11-02 12:26:28 +01:00
aler9
d9d6227906 client: simplify usage of Setup() 2022-11-01 09:58:08 +01:00
aler9
b1f72f9392 return error in OnDecodeError when there are oversized UDP packets 2022-10-31 15:53:15 +01:00
aler9
30e029011b add OnDecodeError callback to both client and server
This allows to detect decode errors of RTP and RTCP packets
2022-10-31 12:36:30 +01:00
aler9
9b5071f505 update docs 2022-10-31 10:05:34 +01:00
aler9
92cc1b5ee9 update golangci-lint 2022-09-17 21:19:40 +02:00
aler9
25199d8e16 client: support cameras that sends invalid RTCP packets with TCP
(https://github.com/aler9/rtsp-simple-server/issues/1085)
2022-08-27 17:34:10 +02:00
aler9
27f8015ac6 simplify usage of Conn 2022-08-15 00:10:21 +02:00
aler9
06bed24dd9 add intermediate layer between net.Conn and client / server 2022-08-14 23:43:01 +02:00
aler9
234e4f4f8d client: fix RTSPS default port 2022-07-09 17:13:11 +02:00
aler9
e262385062 client: remove StartReading, StartReadingAndWait 2022-07-09 17:08:37 +02:00
aler9
36c6d0b7ef client: fix RTSPS default port 2022-07-09 16:53:25 +02:00
Alessandro Ros
df7336b5e8 implement packet reordering for UDP / Multicast transports (#132)
* implement packet reordering for UDP transport

* rtcpreceiver: stop handling unordered / duplicate packets

* remote useless Sleep() from tests
2022-07-05 23:29:03 +02:00
aler9
fb39087150 client: avoid sending/receiving invalid packet when reading with multicast 2022-07-05 22:54:40 +02:00
aler9
18005a9cde ringbuffer: force size to be a power of 2
otherwise buffer is used partially when writeIndex overflows.
2022-07-05 19:25:53 +02:00
aler9
f3b0fc69b4 rename Read / Write into Unmarshal / Marshal when needed
Read() / Write() are used to read / write from streams, while
Unmarshal() / Marshal() are used to decode / encode from / to bytes.
2022-06-27 17:27:16 +02:00
aler9
2c1edabaed update docs 2022-06-23 10:39:13 +02:00
aler9
ac910c63db rename rtpproc into rtpcleaner 2022-06-11 19:50:38 +02:00
aler9
92ed04ad6c optimize RTP packet handling 2022-06-11 19:11:24 +02:00
aler9
98b6515c33 move RTP packet handling into separate package 2022-06-11 13:47:26 +02:00
aler9
2fa3148a27 move URL into dedicated folder 2022-06-05 01:27:19 +02:00