Commit Graph

443 Commits

Author SHA1 Message Date
aler9
08fa61e56d do not add an 'all' path automatically if not present in the configuration file 2021-11-06 12:51:38 +01:00
aler9
322ea55534 split API definitions between their corresponding structs 2021-11-05 17:53:24 +01:00
aler9
afabd331d9 metrics: add hls_muxers metric 2021-11-05 17:29:13 +01:00
aler9
0c79efdab7 api: cleanup 2021-11-05 17:18:21 +01:00
aler9
79e73c5cb4 api: add /v1/hlsmuxers/list endpoint 2021-11-05 17:15:46 +01:00
aler9
fb311e31ec add missing check on strict encryption + UDP multicast 2021-11-05 17:11:40 +01:00
aler9
6564c3511b hls: change Muxer letter 2021-11-05 16:55:00 +01:00
aler9
e4ba689bfd rtsp: print opened listeners in a single line 2021-11-03 22:44:17 +01:00
aler9
f801a9fa39 log the exact reason why a path is closed 2021-11-03 22:41:23 +01:00
aler9
9ab95cc603 use opened / closed instead of created / destroyed in logs 2021-11-03 22:31:02 +01:00
aler9
a867c469fd fix automatic deletion of regexp paths (#664) (#680) 2021-11-03 22:28:50 +01:00
aler9
2e7c56a24f remove useless test 2021-11-03 21:46:06 +01:00
aler9
9245a79cf1 remove ffmpeg from tests 2021-11-03 21:42:29 +01:00
aler9
2d12c37074 use require.EqualError() in tests 2021-11-03 17:52:47 +01:00
aler9
aa01eaf12b cleanup 2021-11-03 16:37:08 +01:00
aler9
47a975de09 hls: fix race condition 2021-11-01 11:07:37 +01:00
aler9
eab2663420 move VLC authentication hack into gortsplib 2021-10-30 15:05:27 +02:00
aler9
09a7e11066 add more fatal errors 2021-10-30 13:56:59 +02:00
aler9
0c4cfd0e53 update gortsplib 2021-10-30 13:55:05 +02:00
aler9
c9c9c88ac8 update golangci-lint 2021-10-30 13:06:29 +02:00
Konstantin Salnikov
a83f57bc3e implement per-path metrics 2021-10-28 19:38:54 +02:00
aler9
161fa58bd6 hls: cleanup 2021-10-28 18:57:04 +02:00
aler9
af63360079 remove count of readers and publishers from log lines 2021-10-28 17:33:43 +02:00
aler9
9af006b488 allow to set logLevel: error in config 2021-10-28 17:29:27 +02:00
aler9
ab70f946b0 unexport members of private structs 2021-10-27 21:01:00 +02:00
aler9
07db2ce0ef print log levels with 3 characters 2021-10-27 20:00:05 +02:00
aler9
75d4f1437d add "error" log level 2021-10-27 19:54:36 +02:00
aler9
8875c8eaa6 rtsp: print exact reason when a session is destroyed (#649) 2021-10-27 19:49:43 +02:00
aler9
226e26e05f metrics: use gin router 2021-10-27 12:14:23 +02:00
aler9
2af39db5be hls: add https tests 2021-10-26 14:54:28 +02:00
aler9
9155bffefb allow disabling HTTPS validation by using sourceFingerprint (#665) 2021-10-25 21:14:13 +02:00
aler9
d30822cb1b make sourceFingerprint optional and allow standard certificate validation 2021-10-25 21:01:29 +02:00
aler9
be54bed373 remove useless checks 2021-10-22 18:43:46 +02:00
aler9
509bed355a update gortsplib 2021-10-22 18:41:10 +02:00
aler9
f32d69a93d fix race condition 2021-10-17 17:16:57 +02:00
aler9
e6238694af api: log requests even with logLevel: info 2021-10-17 17:05:22 +02:00
aler9
c51ba926e0 hls: dump requests and responses when logLevel is debug 2021-10-17 17:02:15 +02:00
aler9
b65d715f0b hls: add Server header 2021-10-17 16:51:35 +02:00
aler9
ef3fab477e hls: use gin as HTTP router 2021-10-17 16:49:49 +02:00
aler9
37f63434ac sort arrays in configuration and API (#644) 2021-10-17 15:40:17 +02:00
aler9
94e519f08f conf: use dedicated interface to unmarshal from environment 2021-10-11 12:13:57 +02:00
aler9
b21efeb28f restore logLevel: debug 2021-10-05 20:36:15 +02:00
aler9
0d4d81c333 remove useless code 2021-10-05 09:41:37 +02:00
aler9
b70a4bfe5b fix regression that prevented setting config slices with env variables (#612) 2021-10-04 08:58:23 +02:00
aler9
0d15e2772a close custom commands with SIGINT again (#495) 2021-10-03 16:09:40 +02:00
aler9
131148ecb4 fix lint 2021-10-03 16:08:10 +02:00
aler9
2a1b3e194d avoid deadlock when a runOnDemand command is used and a path is deleted 2021-10-03 16:05:37 +02:00
aler9
0a9e414625 avoid closing readers twice 2021-10-03 16:01:40 +02:00
aler9
d2c668ceea avoid deadlock when a runOnPublish command is reading and the publisher times out (#595) (#495) 2021-10-03 15:58:24 +02:00
aler9
160966e81b print log messages when runOnConnect and runOnRead are started or stopped 2021-10-03 15:46:06 +02:00
aler9
3149203f36 print log messages about custom commands closing after they are closed 2021-10-03 15:22:42 +02:00
aler9
507d810bff make log messages about custom commands more clear 2021-10-03 15:20:26 +02:00
aler9
091056dd8e add log messages when runOnPublish is started or stopped 2021-10-03 15:19:06 +02:00
aler9
c46ae16dc7 run runOnRead command also with RTMP readers 2021-09-30 13:12:20 +02:00
aler9
e62ed283d1 rtmp: do not raise an error in case of metadata packets (#577) 2021-09-30 11:57:03 +02:00
aler9
e78544f23e update gortsplib 2021-09-28 15:47:56 +02:00
aler9
ab71f22560 move decoding of more configuration into JSON decoding 2021-09-27 16:40:49 +02:00
aler9
f114e90c55 speed up tests 2021-09-27 16:40:49 +02:00
aler9
1f540a2aaf return error in case of non-existent parameters in the configuration file 2021-09-27 16:40:49 +02:00
aler9
b748e6d0ff update error messages 2021-09-27 16:40:49 +02:00
aler9
6921a402d1 decode the configuration when decoding JSON 2021-09-27 16:40:49 +02:00
aler9
54292d712e convert the configuration into JSON before loading it 2021-09-27 16:40:49 +02:00
aler9
ca9645c2f9 api: decode durations from strings instead of numbers
This allows to use human-readable durations with the API,
for instance: "5s" instead of 5000000000
2021-09-26 23:21:37 +02:00
aler9
64808863ed move confenv into conf 2021-09-26 22:25:39 +02:00
aler9
68ab5c05f6 move aac utilities into gortsplib 2021-09-23 20:24:10 +02:00
aler9
3b0327233e move hls utils into gortsplib 2021-09-23 20:14:20 +02:00
aler9
06cffc44df hls: move constants into right file 2021-09-23 11:14:57 +02:00
aler9
e2f33a7495 api: support working with path configs that contains slashes (#581) 2021-09-23 09:07:36 +02:00
aler9
9398cea0c2 update golangci-lint 2021-09-09 23:05:54 +02:00
aler9
ef4b925209 hls: fix discontinuity of TS counters between segments 2021-09-07 12:02:44 +02:00
aler9
98bf53a1e8 hls: simplify audio pts generation 2021-09-07 10:24:57 +02:00
aler9
74f3be1eed hls: use audioAUCount only if audio is primary track 2021-09-07 10:23:32 +02:00
aler9
02afa8ff99 rtmp, hls: remove initial difference of 2secs between PTS and DTS of H264 2021-09-07 10:04:58 +02:00
aler9
2710189945 hls: fix error that caused primary playlist not to be served to more than 1 client 2021-09-06 20:02:23 +02:00
aler9
e189f4570c hls, rtmp: set DTS = PTS when a IDR frame is received 2021-09-06 19:04:39 +02:00
aler9
ddcd0c34cf api: fix concurrency issue when creating multiple path configs at once (#542) 2021-09-06 18:39:15 +02:00
aler9
df4c268813 support proxying HLS 2021-09-05 18:00:29 +02:00
aler9
5eb4741278 hls: speed up serving of files 2021-09-05 15:47:28 +02:00
aler9
7ba507f205 rtmp: print clearer error message in case no H264/AAC tracks are found 2021-08-31 10:42:08 +02:00
Lionel Nicolas
450acfaf4e externalcmd: fix crash when manually pushing to an ondemand path 2021-08-27 08:37:24 +02:00
aler9
b65207012c update gortsplib 2021-08-25 19:51:59 +02:00
aler9
6d69e4969e hls: set html video height to 100% 2021-08-23 13:12:14 +02:00
aler9
92523c2a13 hls: insert segments into playlist only after they're complete
In this way, EXT-X-TARGETDURATION and EXTINF are always filled correctly.

If no segments have been generated yet, the playlist is not returned
until a segment is inserted or the muxer is closed. This causes timeout
issues on iOS Safari, that are solved by waiting for a fetch() before starting
the video.
2021-08-23 13:12:09 +02:00
aler9
6b6d314a07 hls: revert 93b1433 and send PCR once in a while 2021-08-21 21:13:23 +02:00
aler9
b3c13fcf9a hls: do not send DTS if PTS = DTS 2021-08-20 13:07:35 +02:00
aler9
6e5564c0a2 api: return rtspsSessions in case of RTSPS sessions 2021-08-20 10:32:43 +02:00
aler9
da44bbd18a api: normalize entity names 2021-08-20 10:13:41 +02:00
aler9
801ef44f54 rtsp, rtmp: fix ignored errors 2021-08-19 17:28:42 +02:00
aler9
4fdd42fa58 hls: rename remuxer into muxer 2021-08-18 15:49:12 +02:00
aler9
ca499a27c3 remove stats from rtmp and rtsp source 2021-08-18 15:43:56 +02:00
aler9
60823aa2b6 print 'ready' only when a source is really ready 2021-08-18 15:42:41 +02:00
aler9
a2ff0d455f do not allow closed static sources to set a path as ready 2021-08-18 15:41:03 +02:00
aler9
96cb56621a hls: add primary playlist 2021-08-16 18:07:10 +02:00
aler9
ba41af91b2 hls: remove useless check 2021-08-15 09:23:19 +02:00
aler9
bd5e6d1027 hls: send PCR with every IDR NALU 2021-08-15 09:06:55 +02:00
aler9
93b143395e hls: send PCR once, at the beginning of every TS segment 2021-08-14 17:25:40 +02:00
aler9
2d71e69e43 hls: speed up loading by decreasing PTS 2021-08-14 17:08:35 +02:00
aler9
30910d52d2 hls: increase video size up to 100% of the page (#480) 2021-08-14 16:51:51 +02:00
aler9
ffe4a2d1e7 hls: support reading on iOS Safari 2021-08-14 16:35:25 +02:00
aler9
600f7bf48c hls: move NALU filtering into hls muxer 2021-08-14 16:35:25 +02:00
aler9
d5b10fdd66 hls: improve tests 2021-08-14 16:35:25 +02:00
aler9
6ad638d0e8 hls: fix compatibility with video.js and iOS
add AUDs to all h264 packet groups
2021-08-14 16:35:09 +02:00
aler9
40a5c78c8d fix comment 2021-08-14 16:21:05 +02:00
aler9
3828b71206 fix docs 2021-08-14 13:52:57 +02:00
aler9
5a814480b3 hls: write PMT/PAT tables once at the beginning of every TS segment 2021-08-14 13:05:42 +02:00
aler9
eb5bab7e58 hls: set default segment count to 3 2021-08-14 12:27:00 +02:00
aler9
9486f4f32d hls: reply with 404 to invalid requests 2021-08-14 11:15:59 +02:00
aler9
7765de44fc api: log right protocol version of responses 2021-08-14 11:08:02 +02:00
aler9
e0a215ab53 api: log requests and responses even in case of code 404 2021-08-14 11:00:56 +02:00
aler9
0de711d7e0 hls, rtmp: print clearer error messages (#501)
in case a stream doesn't contain a H264 track
or a AAC track.
2021-08-13 14:16:36 +02:00
aler9
d7f1c04711 close custom commands with SIGQUIT instead of SIGINT (#495) 2021-08-12 15:16:39 +02:00
aler9
f1a812ba5d rewrite metrics system to provide more data (#492) 2021-08-12 11:49:21 +02:00
aler9
6702cb41ed api: make sure that entities are deleted immediately after a kick request 2021-08-12 10:50:29 +02:00
aler9
da7f9c7ee1 api: add RTSPS endpoints to list and kick RTSPS sessions 2021-08-11 17:33:43 +02:00
aler9
e57177ef49 cleanup 2021-08-11 13:57:33 +02:00
aler9
20ac25571c api: add "state" field to RTSP sessions and RTMP connections 2021-08-11 12:25:19 +02:00
aler9
6163095a11 fix crash that happens when sourceOnDemand is true and a source times out 2021-08-10 18:36:34 +02:00
aler9
3872b42434 hls: fix freeze when sourceOnDemand is yes and multiple sources are requested at the same time (#493) 2021-08-10 15:00:07 +02:00
aler9
10b5a6b4dd api: add v1 prefix 2021-08-07 19:20:39 +02:00
aler9
478102adc5 change default listen IP of metrics and pprof to 127.0.0.1 2021-08-07 19:20:39 +02:00
aler9
dd33ef740e api: change default listen address to 127.0.0.1:9997 2021-08-07 19:20:39 +02:00
aler9
3134b95e80 api: add documentation 2021-08-07 19:20:39 +02:00
aler9
fdd487f3c5 rename "record" source value into "publisher" 2021-08-07 19:20:39 +02:00
aler9
0535ab8e9c api: add tests 2021-08-07 19:20:39 +02:00
aler9
5943660ab3 api: print all requests and responses when logLevel is debug 2021-08-07 19:20:39 +02:00
aler9
ed375583d0 Implement an HTTP API to query and control the server 2021-08-07 19:20:39 +02:00
aler9
e516d265d6 refactor ondemand system 2021-08-03 22:40:47 +02:00
aler9
fd27ed941e fix multiple freezes 2021-08-01 17:22:28 +02:00
aler9
90e24b79cb cleanup 2021-08-01 16:58:46 +02:00
aler9
f0a283d141 reload only rtsp server when authMethods is changed 2021-08-01 16:56:53 +02:00
aler9
f1b365a7bc cleanup 2021-08-01 16:39:40 +02:00
aler9
be1e7c5cc9 move code into gortsplib 2021-07-31 21:27:55 +02:00
aler9
eee64a1450 split readPublisher into reader and publisher 2021-07-31 20:46:06 +02:00
aler9
1a7f26ce29 add path prefix to path entities 2021-07-31 18:32:00 +02:00
aler9
5ab989250d cleanup 2021-07-31 18:25:47 +02:00
aler9
9819ae43e8 cleanup 2021-07-31 17:45:15 +02:00
aler9
00dd622180 rename readIps and PublishIps into readIPs and publishIPs 2021-07-31 17:44:40 +02:00
aler9
abc4a47c1c hls: reject methods other than GET and OPTIONS 2021-07-30 21:35:13 +02:00
aler9
de6e9589b8 fix multiple freezes during shutdown of components 2021-07-30 20:13:17 +02:00
aler9
82e65230fd speed up hls remuxing by linking together pathManager and hlsServer 2021-07-30 14:49:09 +02:00
aler9
1146d5cf1b hls: new option hlsAlwaysRemux to always remux streams into HLS, not only when requested 2021-07-29 16:56:40 +02:00
aler9
4a1ca7aa3e hls: fix segment splitting error introduced by c3c643c6 2021-07-29 16:27:15 +02:00
aler9
89d6d0f99e unexport method 2021-07-29 15:11:02 +02:00
aler9
c5ad06af9c hls: make sure to send entire TS segments to clients 2021-07-29 12:22:40 +02:00
aler9
f16acb937f hls: rename converter into remuxer 2021-07-29 12:22:08 +02:00
mattlamb99
0a2764ed05 Minor spelling fix
alfa -> alpha.
2021-07-25 10:36:04 +02:00
aler9
c3c643c602 hls: move muxer into dedicated object 2021-07-24 18:31:54 +02:00
aler9
f225363e7d speed up tests 2021-07-24 16:20:04 +02:00
aler9
9062dbf883 move most components into internal/core
in this way coverage can be computed correctly.
2021-07-24 16:09:52 +02:00
frjol
bee089aced Allow dot and tilde as part of the RTSP URL 2021-07-24 12:12:50 +02:00