Commit Graph

238 Commits

Author SHA1 Message Date
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
Alessandro Ros
2d0c530d97 replace new() with initialize() (#490) 2023-12-26 12:48:35 +01:00
Alessandro Ros
f78b04cf4e client: support writing to ONVIF back channels (#101) (#462) 2023-11-15 13:20:29 +01:00
Alessandro Ros
01b3bfc6ab move url.URL into base.URL (#459) 2023-11-07 16:51:45 +01:00
Alessandro Ros
7632ae5615 client: support receiving responses with spaces in CSeq (#437) (#446) 2023-10-22 13:58:12 +02:00
Alessandro Ros
78198a588b fix reading and writing multicast packets in case of multiple interfaces (#413)
(https://github.com/bluenviron/mediamtx/issues/2029)
2023-09-11 23:36:53 +02:00
Alessandro Ros
8fdc7193f2 client: support cameras that don't reply to keepalives (#412)
(https://github.com/bluenviron/mediamtx/issues/2302)
2023-09-11 17:49:46 +02:00
Alessandro Ros
d273452e83 client: accept responses only if their CSeq corresponds to requests (#410) 2023-09-10 18:26:32 +02:00
Alessandro Ros
dfa09dd125 client: log every incoming response (#409) 2023-09-10 18:08:06 +02:00
Alessandro Ros
4495e7d689 move most errors into pkg/liberrors (#408) 2023-09-10 17:32:16 +02:00
Alessandro Ros
af14144d2c client: fix enforcing timeout to responses (#406) 2023-09-10 16:45:12 +02:00
Alessandro Ros
e9295e073b client: add OnServerRequest and OnServerResponse callbacks (#405) 2023-09-10 16:28:10 +02:00
Alessandro Ros
3bdae4ed46 make WritePacket*() return errors when write queue is full (#388) 2023-08-26 18:09:45 +02:00
Alessandro Ros
b97aed00fe remove ReadBufferCount; rename WriteBufferCount into WriteQueueSize (#384) 2023-08-26 12:57:33 +02:00
aler9
67062787f6 Merge branch 'main' into v4 2023-08-25 16:10:42 +02:00
Alessandro Ros
72aa55a012 log decode errors and lost packets by default (#380) 2023-08-25 16:08:28 +02:00