Commit Graph

295 Commits

Author SHA1 Message Date
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
aler9
584cc9357a rtsp source: log decode errors 2022-10-31 19:11:20 +01:00
aler9
4f6121b1c4 rpicamera: use exact frame timestamps 2022-10-25 12:14:37 +02:00
aler9
7013b75daf rpicamera: add rpiCameraMode parameter (#1111) 2022-10-25 11:23:44 +02:00
Alessandro Ros
8825fddd89
Add additional Raspberry Pi Camera parameters (#1198)
* rpicamera: add rpiCameraHFlip and rpiCameraVFlip parameters

* rpicamera: add rpiCameraBrightness, rpiCameraContrast,
rpiCameraSaturation, rpiCameraSharpness, rpiCameraExposure,
rpiCameraAWB, rpiCameraDenoise, rpiCameraShutter, rpiCameraMetering,
rpiCameraGain, rpiCameraEV, rpiCameraROI, rpiCameraTuningFile

* support float values in config file
2022-10-24 15:08:30 +02:00
aler9
fdb1955e1d api: autogenerate structs from configuration 2022-10-23 18:01:51 +02:00
Alessandro Ros
e5ab731d14
Improve HLS client (#1179)
* hls source: support fMP4s video streams

* hls source: start reading live streams from (end of playlist - starting point)

* hls client: wait processing of current fMP4 segment before downloading another one

* hls client: support fmp4 trun boxes with default sample duration, flags and size

* hls client: merge fmp4 init file reader and writer

* hls client: merge fmp4 part reader and writer

* hls client: improve precision of go <-> mp4 time conversion

* hls client: fix esds generation in go-mp4

* hls client: support audio in separate playlist

* hls client: support an arbitrary number of tracks in fmp4 init files

* hls client: support EXT-X-BYTERANGE

* hls client: support fmp4 segments with multiple parts at once

* hls client: support an arbitrary number of mpeg-ts tracks

* hls client: synchronize tracks around a primary track

* update go-mp4

* hls: synchronize track reproduction around a leading one

* hls client: reset stream if playback is too late

* hls client: add limit on DTS-RTC difference

* hls client: support again streams that don't provide codecs in master playlist
2022-10-23 14:04:33 +02:00
aler9
fad3474805 rtmp server: print only tracks that are effectively being read 2022-10-19 17:03:04 +02:00
aler9
c9de689a72 hls muxer: print only tracks that are effectively being converted 2022-10-19 17:01:26 +02:00
aler9
680b348902 hls muxer: change m3u8 Content-Type to application/x-mpegURL 2022-10-18 11:02:52 +02:00
aler9
8aa719eda5 prepend SPS and PPS once when remuxing H264 streams
This avoids missing frames when reading with RTSP and the original
stream has NALU groups with multiple IDRs in it.
2022-10-09 23:40:28 +02:00
aler9
31d9429c18 hls source: refactor client 2022-10-09 12:56:48 +02:00
aler9
8f48dfa49e remove outdated command line description 2022-09-18 21:59:00 +02:00
aler9
f1fb00b80f update golangci-lint 2022-09-17 21:19:45 +02:00
aler9
a8d1f91646 fix tests that involve HTTP clients 2022-08-31 08:53:19 +02:00
aler9
f25e14183d api, hls, metrics, pprof: always close HTTP listeners
due to a race condition, HTTP listeners could remain open even after
the closure of a component.
2022-08-30 18:43:41 +02:00
aler9
1e788f81fd hls muxer: add WWW-Authenticate header in case of external authentication 2022-08-27 18:26:07 +02:00
aler9
71f927ecd5 hls: allow setting current time when writing packets 2022-08-27 15:43:25 +02:00
aler9
afcb874657 add missing tests 2022-08-23 13:47:48 +02:00
aler9
44f29c9ba3 api: mark RTMPS connections as rtmpsConns instead of rtmpConns (#1099) 2022-08-23 13:28:18 +02:00
aler9
960cfb9f99 api: always encode timestamps wth RFC3339 (#1093)
this fixes "lastRequest" in /v1/hlsmuxers/list that was encoded in a
wrong format
2022-08-23 13:24:27 +02:00
aler9
bbfea63539 rtmp: read or write tracks only after interacting with the path 2022-08-22 12:24:38 +02:00
aler9
86c5fa9ba4 cleanup interaction with external auth 2022-08-22 11:24:21 +02:00
aler9
83faae8a8e rename interaction functions between paths and readers / publishers
readers and publishers can now interact with paths by using:

readerAdd()
readerStart()
readerStop()

publisherAdd()
publisherStart()
publisherStop()
2022-08-22 09:39:16 +02:00
aler9
85ce12199a rtmp source: allow outgoing acknowledges 2022-08-16 18:44:31 +02:00
aler9
7216fc683c rpicamera: fix crash 2022-08-16 18:44:31 +02:00
aler9
e255d004e3 rtmp server: change value of MessageStreamID of outgoing messages 2022-08-16 18:44:31 +02:00