Commit graph

150 commits

Author SHA1 Message Date
aler9
d5dfce16ea hls muxer: fix race condition 2023-01-08 21:16:20 +01:00
aler9
b20abbed6c webrtc muxer: keep the WebSocket connection
The WebSocket connection is kept open in order to use it to notify
shutdowns.
2023-01-08 15:37:47 +01:00
aler9
d0e8d00616 tests: fix race condition in HLS tests 2023-01-07 16:08:34 +01:00
aler9
9d19ccc837 add WebRTC and low-latency HLS tests 2023-01-07 12:33:28 +01:00
aler9
6d14b011c4 hls muxer: improve generation of H265 codec parameters 2023-01-06 16:48:35 +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
fa1c07253f hls source: skip unsupported tracks
Skip AC-3, EC-3, closed caption tracks
2023-01-05 14:04:36 +01:00
aler9
3fd2a25dc1 improve tests 2023-01-03 19:22:10 +01:00
aler9
034e42f463 hls muxer: support reading Opus tracks (#1338) 2023-01-03 18:36:13 +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
242fa0bbba hls muxer: restore support for EXT-X-PRELOAD-HINT 2022-12-29 20:41:21 +01:00
aler9
fbf8e82db5 update gortsplib 2022-12-28 20:32:03 +01:00
aler9
4ebf4f7398 add HLS/FMP4 client tests 2022-12-27 12:00:00 +00:00
aler9
31541765fd hls source: fix crash in case of invalid EXT-X-MEDIA-SEQUENCE 2022-12-27 12:00:00 +00:00
aler9
241c81dc56 hls source: download first playlist once 2022-12-27 12:00:00 +00:00
aler9
0c6385f0e8 hls source: support MPEG-TS streams with metadata tracks 2022-12-27 12:00:00 +00: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
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
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
aler9
a4363dfaa3 hls: use fields for each flag values 2022-11-02 10:24:58 +01: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
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
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
680b348902 hls muxer: change m3u8 Content-Type to application/x-mpegURL 2022-10-18 11:02:52 +02:00
aler9
31d9429c18 hls source: refactor client 2022-10-09 12:56:48 +02:00
aler9
3b8e2f0211 hls source: support streams that start with negative DTS 2022-10-09 12:16:29 +02:00
aler9
3e9d19e5e3 hls: split fmp4/mpegts muxer tests 2022-09-17 22:21:16 +02:00
aler9
f1fb00b80f update golangci-lint 2022-09-17 21:19:45 +02:00
aler9
42b6e1f922 hls: use segment IDs as segment names
when hlsVariant is mpegts, this prevents conflicts that were previously
caused by the fact that the timestamp was used as segment name.
2022-08-27 16:21:24 +02:00
aler9
4c0833664d hls: fix blocking playlists
when hlsVariant is lowLatency and hlsSegmentCount is not 7, segment IDs
where assigned erroneously.
2022-08-27 16:15:47 +02:00
aler9
a018f214bc hls: add fmp4 tests 2022-08-27 16:04:38 +02:00
aler9
43dc57716b speed up tests 2022-08-27 15:46:43 +02:00
aler9
71f927ecd5 hls: allow setting current time when writing packets 2022-08-27 15:43:25 +02:00
aler9
5ad2ea8924 hls: move mpegts writer into dedicated folder 2022-08-27 12:41:30 +02:00
aler9
b5dd658d29 fmp4: move avcc encoding into writer 2022-08-27 12:11:00 +02:00
aler9
f952ff25f6 remove useless append() 2022-08-14 13:14:08 +02:00
aler9
e146df9ed7 hls: move fMP4 generator into dedicated folder 2022-08-14 12:44:01 +02:00
aler9
a8822b9f15 hls muxer / source: route AAC units singularly
This aligns the HLS implementation with the rest of the server. In case
of HLS/MPEGTS, the server now generates an ADTS packet for each AU,
without grouping multiple AUs into a single ADTS packet.
2022-08-14 12:19:11 +02:00
aler9
af7a815f83 update gortsplib 2022-08-05 23:50:45 +02:00
aler9
4c2a4f9642 hls muxer: create only 7 initial gaps (#999)
instead of filling the entire segment list.
2022-07-05 23:52:11 +02:00
aler9
08ddc9f83d update gortsplib 2022-06-27 17:52:20 +02:00
aler9
41b08c9f50 update gortsplib 2022-06-24 17:00:28 +02:00
aler9
ec4c40b222 update gortsplib 2022-06-23 13:54:48 +02:00