253 Commits

Author SHA1 Message Date
Alessandro Ros
6107dea9a0 add RTSP-over-WebSocket (#891) (#898) 2025-09-17 21:30:11 +02:00
Alessandro Ros
425fce20fc rename Transport* into Protocol* (#895) 2025-09-16 12:06:50 +02:00
Alessandro Ros
ec81d388d1 switch to v5 (#890)
* switch from v4 to v5

* remove deprecated entities

* remove "2" suffix from entities

* rename TransportProtocol into Protocol
2025-09-16 11:46:52 +02:00
Alessandro Ros
8c7e4320bc server: fix panic due to regression in #887 (#892)
This happened when writing a TCP packet to a conn after a read error.
2025-09-16 10:36:06 +02:00
Alessandro Ros
ead4471b5c support RTSP-over-HTTP (#433) (#768) (#887) 2025-09-15 19:00:50 +02:00
Alessandro Ros
0e674daa7b client: remove automatic SNI support (#888)
SNI support should be enabled by properly filling TLSConfig.
2025-09-15 15:54:37 +02:00
Alessandro Ros
9db34842c8 move host resolution from headers to client/server (#883) 2025-09-07 15:39:02 +02:00
Alessandro Ros
c466c342ba expose transport details (#850)
add Client.Transport, ServerConn.Transport ServerSession.Transport
2025-09-06 16:28:40 +02:00
Alessandro Ros
3c2625c7cf make most methods thread safe (#882)
Client: Stats

ServerConn: Session, Stats

ServerSession: State, Stats, Medias, Path, Query, Stream,
SetuppedSecure, SetuppedTransport, AnnouncedDescription
2025-09-06 15:42:07 +02:00
Alessandro Ros
65da49ffc0 optimize code (#878)
* remove unused code

* initialize UDP listeners and SRTP before initializing medias

* make rtpSender and rtpReceiver available before PLAY / RECORD

* use writerMutex to protect writer only
2025-09-05 23:11:51 +02:00
Alessandro Ros
1f543a0331 rename rtcpreceiver into rtpreceiver, rtcpsender into rtpsender (#874)
These utilities were originally meant to handle RTCP only, now they are
in charge of every QoS mechanism.
2025-09-04 19:06:56 +02:00
Alessandro Ros
cf2ff2b564 add Transport.Profile, media.Profile (#873)
this will allow to support AVPF in the future.
2025-09-04 18:08:51 +02:00
Alessandro Ros
7a5df14b2c add UDPReadBufferSize option (#857) 2025-08-11 10:49:54 +02:00
Alessandro Ros
314288ef12 client: prevent setting up undesired back channels (#856) 2025-08-09 17:14:22 +02:00
Alessandro Ros
5cbe14c918 remove useless check (#849) 2025-08-07 16:31:12 +02:00
Alessandro Ros
e9db56f913 client: use server interface as multicast interface (#762) (#847)
this fixes most errors "found no interface that is multicast-capable
and can communicate with IP".
2025-08-04 15:17:49 +02:00
Alessandro Ros
63f7ffc3e3 improve Stats performance (#839)
Build aggregated statistics by using already-available data.
2025-07-26 14:01:17 +02:00
Alessandro Ros
9c1011567a client: add Start2; deprecate Start (#801) 2025-07-05 13:02:45 +02:00
Alessandro Ros
616fa7ea89 support encrypted streams with SRTP and MIKEY (#520) (#809) 2025-07-05 12:48:13 +02:00
Alessandro Ros
2c2f99e1a3 client: open firewall before sending PLAY request (#821)
this prevents losing some initial packets.
2025-07-05 11:13:51 +02:00
Alessandro Ros
4f3337f56c set SSRC of outgoing packets (#803)
In client and server, each format now has a fixed, unique, known in
advance SSRC, that is applied to outgoing packets belonging to each
format.

This is needed to support SRTP/MIKEY, that require each format to have
a fixed, unique, and known in advance SSRC.

A secondary effect is that SETUP responses now always contain SSRCs of
each format, regardless of the fact that the first packet has been
produced or not (previously we needed at least one packet, from which
the SSRC was extracted).
2025-07-05 11:08:57 +02:00
Alessandro Ros
d7f40e5026 client: when reading UDP streams, write reports to right IP (#818)
source IPs sent by the server were not taken into consideration. This
fixes the issue.
2025-06-30 20:07:48 +02:00
Alessandro Ros
3055b4f9a1 client: when reading multicast streams, write unicast reports (#817)
Previously, receiver reports were broadcasted to all connected clients. Now they are sent to the server only.
2025-06-30 20:07:19 +02:00
Alessandro Ros
bf3ce11479 client: prevent downgrading from RTSPS to RTSP during redirect (#816) 2025-06-30 16:03:05 +02:00
Alessandro Ros
33a87b2270 client: deprecate Seek() (#806) 2025-06-29 10:27:54 +02:00
Alessandro Ros
5681eddb28 update documentation (#788) 2025-05-29 19:40:03 +02:00
Alessandro Ros
4e3c5e6c0d client: skip firewall opening when writing back channels (#776) 2025-05-04 15:47:06 +02:00
Alessandro Ros
904b0a1920 client: enable keepalives in most cases (#775) 2025-05-04 15:39:07 +02:00
Alessandro Ros
2cbdc2a0b7 client: fix timeout when writing to back channels (#575) (#774)
Keep alives are now sent when writing to back channels too.
2025-05-04 13:17:53 +02:00
Alessandro Ros
74a65e4c08 expose back rtcpreceiver, rtcpsender, rtpreorderer, rtplossdetector (#755) 2025-04-12 10:10:05 +02:00
Alessandro Ros
61372cfa68 rename OnPacketLost2 into OnPacketsLost (#736) 2025-03-24 18:42:48 +01:00
Alessandro Ros
c0c275e6a6 expose number of lost packets without passing through an error (#735) 2025-03-24 16:39:55 +01:00
Alessandro Ros
376fb9e821 replace New* with Initialize (#723) 2025-03-16 13:58:35 +01:00
Alessandro Ros
55556f1ecf add ServerConn.VerifyCredentials() (#555) 2025-02-18 17:39:04 +01:00
Alessandro Ros
ca6286321d fix various race conditions when writing packets to closed clients or server sessions (#684) 2025-01-19 12:07:59 +01:00
Sijmen
b2cfa93d13 client: fix panic when writing packets after connection error (#681)
* Fix writer nullpointer panic on network reconnect

* add additional code and tests

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2025-01-18 19:40:47 +01:00
Alessandro Ros
4d3d6bc108 prevent RTPPacketsJitter from being NaN (#670) 2024-12-25 15:32:16 +01:00
Alessandro Ros
5d44205cbe rename RTPJitter into RTPPacketsJitter (#669) 2024-12-25 15:14:40 +01:00
Alessandro Ros
87c6d81053 add statistics to Client, ServerSession, ServerConn, ServerStream (#556) (#656) 2024-12-25 13:30:08 +01:00
Alessandro Ros
5506eb2f7f use a single TCP outgoing buffer each client / session (#665)
this saves memory.
2024-12-24 10:24:24 +01:00
Alessandro Ros
8f74559616 close connections in case of write errors (#613) (#655) 2024-12-14 13:45:11 +01:00
Alessandro Ros
a19432fd87 bump Golang to 1.23 (#610) 2024-11-04 13:39:10 +01:00
Alessandro Ros
01fd8033a2 use new time decoder in place of deprecated one (#643) 2024-11-04 13:26:14 +01:00
Alessandro Ros
9ac016c5dd client: fix resetting time decoder (#642) 2024-11-04 13:21:49 +01:00
Kevin Wang
21e06b0f68 Support relative Content-Base paths (#636) 2024-10-23 22:22:41 +02:00
Alessandro Ros
2ca0bffa20 use native timestamps instead of time.Duration (#627)
this improves timestamp precision
2024-10-07 15:58:43 +02:00
Alessandro Ros
c9bf79f340 client: omit mode from Transport header (#611) (#574) (#614) 2024-09-09 10:28:34 +02:00
Alessandro Ros
ff5bda0e67 client: prevent switching protocol when protocol is fixed to UDP (#607) 2024-08-25 20:40:56 +02:00
Alessandro Ros
363b48e632 update golangci-lint (#554) 2024-04-28 18:20:25 +02:00
Alessandro Ros
9cd54f56b4 client: prevent UDP listener from closing twice (#515) 2024-01-31 22:10:31 +01:00