Commit Graph

321 Commits

Author SHA1 Message Date
aler9
e7e8d5ce20 api: add more attributes to WebRTC connections
new attributes: peerConnectionEstablished, localCandidate, remoteCandidate
2023-01-07 13:48:03 +01:00
aler9
cca4702357 webrtc muxer: fix race condition
this happened when server was recreated due to API or hot reloading
2023-01-07 13:11:19 +01:00
aler9
9d19ccc837 add WebRTC and low-latency HLS tests 2023-01-07 12:33:28 +01:00
aler9
ec1f957627 webrtx muxer: fix timeout in case of H264 tracks 2023-01-06 20:30:43 +01:00
aler9
777860f757 webrtc muxer: fix freeze on Firefox 2023-01-06 20:02:23 +01:00
aler9
5a0143056a webrtc muxer: fix HTTP status code of index page
Status code was 404, not is 200.
2023-01-06 18:47:54 +01:00
aler9
f837ba6a83 hls source: support proxying H265 and Opus tracks 2023-01-06 15:39:20 +01:00
aler9
3f7009f72a hls source: support proxying any number of tracks
Tracks were previously limited to 2
2023-01-06 15:25:35 +01:00
aler9
e3fff72b7c move format processors into dedicated folder 2023-01-05 12:54:00 +01:00
aler9
535cbe41e8 speed up tests 2023-01-05 00:01:15 +01:00
aler9
034e42f463 hls muxer: support reading Opus tracks (#1338) 2023-01-03 18:36:13 +01:00
aler9
b26f848613 webrtc: add webrtcICEUDPMuxAddress 2022-12-30 17:23:41 +01:00
aler9
c42e2a5b8a webrtc: print ICE candidate descriptions 2022-12-30 16:56:55 +01:00
aler9
3e0419358a fix crash when webrtcICETCPMuxAddress is already taken 2022-12-30 15:42:35 +01:00
andrew-ld
b27c363ecf
(webrtc) added support for ice mux tcp and nat1to1ips (#1323)
* add webrtcp static tcp mux port

* add ice nat1 host configuration and cleanup

* typo

* rename config keys

* apply codecov suggestions

* apply review suggestions

* typo

* dont use deepequal for WebRTCICETCPMuxAddress

* unexport NewPeerConnection()

* remove Dockerfile

* use an empty list instead of nil value in webrtcICEHostNAT1To1IPs

* drop webrtcICETCPMuxEnable and enable TCP mux when webrtcICETCPMuxAddress is filled

* run go mod tidy

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2022-12-30 15:39:20 +01:00
Alessandro Ros
5de600ffaa
support reading H265 tracks with HLS (#1342)
* support reading H265 tracks with HLS

* update README
2022-12-29 20:46:31 +01:00
aler9
37baa33fc8 hls muxer: add workaround for bug on latest iPhone iOS
In iPhone iOs 16.1.1, the EXT-X-PRELOAD-HINT file is requested without
the last character, and "partXX.mp4" becomes "partXX.mp"
2022-12-29 20:41:21 +01:00
aler9
ec8175e434 fix tests 2022-12-29 16:36:24 +01:00
aler9
fbf8e82db5 update gortsplib 2022-12-28 20:32:03 +01:00
aler9
455b8beff7 simplify code 2022-12-27 18:01:58 +01:00
Alessandro Ros
ad52b3fab7
Support publishing with RTMP and H265 (for OBS Studio) (#1333)
* support publishing with RTMP and H265 (for OBS Studio)

* rtmp source: block H265 tracks
2022-12-27 13:55:30 +01:00
aler9
738c953a59 update gortsplib 2022-12-22 21:19:06 +01:00
aler9
f394c9f8a8 api: add ID to WebRTC readers (#1318) 2022-12-21 12:50:02 +01:00
aler9
bab5caee01 webrtc: fix connection in case of high latency
When latency is high, one side of the peer connection switched to the
"connected" state before the other one, and then closed the WebSocket
connection since it's useless after the peer connection has been
established. This caused the other side of the connection to detect a
WebSocket error and to exit.

The WebSocket connection must remain open, otherwise the
"connected" state is not set by both parts.
2022-12-20 13:30:30 +01:00
aler9
ec86401037 webrtc: make HTTPS optional (#1312) 2022-12-19 23:26:07 +01:00
aler9
0e68aedf12 webrtc: fix support for video + audio 2022-12-19 23:08:24 +01:00
aler9
aac0f1b8a2 webrtc: fix sending of RTCP sender reports 2022-12-19 22:48:06 +01:00
aler9
ac371d8dca remove sendrecv comment 2022-12-19 22:13:54 +01:00
aler9
0772db509a fix freeze when reading a stream with both HLS and RTSP 2022-12-18 23:16:20 +01:00
Alessandro Ros
5efe97abf1
Support reading with WebRTC (#1242) 2022-12-16 00:50:47 +01:00
aler9
478607a602 hls muxer: ask credentials again after failed attemps 2022-12-14 23:51:18 +01:00
aler9
57015e2bf0 fix authentication with VLC
This fixes the case in which VLC is trying to read a path with a query
(i.e. stream?mykey=myval) and the path requires read credentials.
2022-12-14 19:07:39 +01:00
aler9
6524130ab9 implement resizing of oversized H265 RTP packets 2022-12-14 18:54:35 +01:00
aler9
ffbdf51669 fix handling of oversized H264 RTP packets
Resized RTP packets were wrongly mixed with original packets.
Original packets are now discarded correctly.
2022-12-14 17:50:40 +01:00
aler9
39da300345 update H265 track parameters when resolution, VPS, SPS or PPS change 2022-12-14 15:41:59 +01:00
aler9
4bafa4ea9b add dedicated processors for H265 and Opus 2022-12-13 21:26:35 +01:00
Alessandro Ros
c778c049ce
switch to gortsplib v2 (#1301)
Fixes #1103

gortsplib/v2 supports multiple formats inside a single track (media). This allows to apply the resizing algorithm to single formats inside medias.

For instance, if a media contains a a proprietary format and an H264 format, and the latter has oversized packets, they can now be resized.
2022-12-13 20:54:17 +01:00
aler9
7ed0a873f5 use Track.String() instead of reflect for getting track names 2022-11-28 11:16:31 +01:00
Alessandro Ros
e605727c78
produce same absolute time in RTSP and HLS (#1249)
* add a NTP timestamp to each data unit
* use that NTP timestamp in all protocols
2022-11-28 09:00:05 +01:00
aler9
282d155a4f update gortsplib 2022-11-15 23:47:12 +01:00
Alessandro Ros
8bee4af86a
api, metrics: add number of bytes received and sent from/to all entities (#1235)
* API: number of bytes received/sent from/to RTSP connections
* API: number of bytes received/sent from/to RTSP sessions
* API: number of bytes received/sent from/to RTMP connections
* API: number of bytes sent to HLS connections
* API: number of bytes received from paths
* metrics of all the above
2022-11-11 11:59:52 +01:00
Alessandro Ros
423bb61daa
use UUIDs as IDs in all entities (#1234) 2022-11-09 19:31:52 +01:00
Alessandro Ros
4ac175d3cc
api, metrics: add endpoints and metrics for RTSP connections (#1233)
new API endpoints:

* /v1/rtspconns/list
* /v1/rtspsconns/list

new metrics:

* rtsp_conns
* rtsps_conns
2022-11-09 18:31:31 +01:00
aler9
4d770cef94 hide normal decoder states from logs 2022-11-03 16:05:46 +01:00
aler9
eae895e321 decrease ram consumption 2022-11-03 15:44:34 +01:00
aler9
7eb7883270 improve performance 2022-11-03 15:27:21 +01:00
Alessandro Ros
0943b269ab
Decode streams once and only when needed (#1218)
* split data into specialized structs

* move MPEG4-audio decoding into streamTrack

* restore video/audio synchronization in HLS muxer and RTMP server

* log decode errors

* move H264 decoding and re-encoding here from gortsplib

* add tests

* update gortsplib
2022-11-02 20:52:12 +01:00
Alessandro Ros
bf14467331
move high-level tests into dedicate workflow (#1219) 2022-11-02 18:25:49 +01:00
aler9
f0514b3983 update gortsplib 2022-11-01 16:13:18 +01:00
aler9
f7fdd60966 rtsp server: log decode errors 2022-10-31 19:16:13 +01:00