Commit Graph

641 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
3b5efb25a3 add docker images with libcamera included (#1110) 2022-12-12 13:52:09 +01:00
aler9
ff12605106 rpicamera: remove grep and awk dependency 2022-12-12 13:14:26 +01:00
aler9
062fb600e8 return an error when rpiCamera in used in two paths (#1257) 2022-12-12 11:49:11 +01:00
aler9
3f5c550baf rpicamera: support libcamera 0.0.2 2022-12-08 23:50:18 +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
6471800b52
rtmp server: fix responses to ping requests (#1245) 2022-11-14 11:39:33 +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
4e4067dc85 rpicamera: avoid hanging during encode errors (#1133) 2022-11-03 17:39:51 +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
a4363dfaa3 hls: use fields for each flag values 2022-11-02 10:24:58 +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
a48374c81f rpicamera: fix compatibility with latest version of libcamera (#1195) 2022-10-29 12:34:44 +02:00
aler9
cc0d8f7dab hls client: ignore data from unrecognized tracks in MPEG-TS segments 2022-10-26 21:53:33 +02:00
aler9
0daf8a17b7 hls client: skip packets received before the 1st packet of the leading
track, for MPEG-TS segments too
2022-10-26 21:50:17 +02:00
aler9
7981522bf6 hls client: skip packets received before the 1st packet of the leading
track; make sure that the initial DTS is zero
2022-10-26 17:39:32 +02:00
aler9
96433e753b fix tests 2022-10-25 14:06:09 +02:00
aler9
4f6121b1c4 rpicamera: use exact frame timestamps 2022-10-25 12:14:37 +02:00
aler9
532592c099 rpicamera: change default resolution to 1920x1080 2022-10-25 11:29:04 +02:00
aler9
7013b75daf rpicamera: add rpiCameraMode parameter (#1111) 2022-10-25 11:23:44 +02:00
aler9
dfef383311 hls muxer: fix compatibility with grafov/m3u8 2022-10-24 16:13:37 +02:00
aler9
841bbec959 hls client: allow segments with up to 200 parts 2022-10-24 16:10:13 +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
aler9
ec4ec142b4 forbid using 'rpiCamera' as source on regexp paths 2022-10-23 16:44:34 +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
847ca6c89d hls muxer: fix regression introduced in b5dd658 2022-10-20 10:20:38 +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