Commit Graph

38 Commits

Author SHA1 Message Date
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
282d155a4f update gortsplib 2022-11-15 23:47:12 +01:00
aler9
96433e753b fix tests 2022-10-25 14:06:09 +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
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
41b08c9f50 update gortsplib 2022-06-24 17:00:28 +02:00
aler9
ec4c40b222 update gortsplib 2022-06-23 13:54:48 +02:00
aler9
9bd8b2cfb6 rtmp server, hls muxer: fix DTS in case of B-frames and remove PTS-DTS offset 2022-06-03 11:31:39 +02:00
aler9
acd788d632 update gortsplib 2022-06-02 20:58:48 +02:00
Alessandro Ros
e115983296
Implement Low-Latency HLS (#938)
* add hlsVariant parameter

* hls: split muxer into variants

* hls: implement fmp4 segments

* hls muxer: implement low latency mode

* hls muxer: support audio with fmp4 mode

* hls muxer: rewrite file router

* hls muxer: implement preload hint

* hls muxer: add various error codes

* hls muxer: use explicit flags

* hls muxer: fix error in aac pts

* hls muxer: fix sudden freezes with video+audio

* hls muxer: skip empty parts

* hls muxer: fix video FPS

* hls muxer: add parameter hlsPartDuration

* hls muxer: refactor fmp4 muxer

* hls muxer: fix CAN-SKIP-UNTIL

* hls muxer: refactor code

* hls muxer: show only parts of last 2 segments

* hls muxer: implementa playlist delta updates

* hls muxer: change playlist content type

* hls muxer: improve video dts precision

* hls muxer: fix video sample flags

* hls muxer: improve iphone audio support

* hls muxer: improve mp4 timestamp precision

* hls muxer: add offset between pts and dts

* hls muxer: close muxer in case of error

* hls muxer: stop logging requests with the info level

* hls muxer: rename entry into sample

* hls muxer: compensate video dts error over time

* hls muxer: change default segment count

* hls muxer: add starting gap

* hls muxer: set default part duration to 200ms

* hls muxer: fix audio-only streams on ios

* hls muxer: add playsinline attribute to video tag of default web page

* hls muxer: keep mpegts as the default hls variant

* hls muxer: implement encryption

* hls muxer: rewrite dts estimation

* hls muxer: improve DTS precision

* hls muxer: use right SPS/PPS for each sample

* hls muxer: adjust part duration dynamically

* add comments

* update readme

* hls muxer: fix memory leak

* hls muxer: decrease ram consumption
2022-05-31 19:17:26 +02:00
aler9
3b21da7762 hls muxer: add EXT-X-VERSION to primary playlist 2022-04-24 11:37:11 +02:00
aler9
889ebef249 hls muxer: add EXT-X-INDEPENDENT-SEGMENTS tag 2022-04-20 13:49:08 +02:00
aler9
db7ee22789 rtsp source: support AAC tracks with custom sizelength, indexlength and indexdeltalength
(https://github.com/aler9/gortsplib/pull/118)
2022-04-15 13:17:00 +02:00
aler9
2c485f918b fix tests 2022-04-08 18:19:53 +02:00
aler9
6385fcdea5 hls muxer: improve tests 2022-03-20 17:46:24 +01:00
aler9
2680ffcecb hls: add EXT-X-PROGRAM-DATE-TIME tag 2022-02-22 14:31:32 +01:00
aler9
3e8668f9e2 rtsp server: allow again H264 tracks without SPS or PPS in the SDP (#787) 2022-01-30 17:59:24 +01:00
aler9
343a5f17fb hls: add new parameter hlsSegmentMaxSize 2022-01-30 17:54:05 +01:00
aler9
2bfdcc7d89 update gortsplib 2022-01-30 17:43:03 +01:00
aler9
4c7da3d80e hls: improve tests 2022-01-29 11:36:14 +01:00
aler9
bb5129d219 hls: fix intermittent audio on iOS 2021-12-23 19:18:36 +01:00
aler9
18a6e04854 hls: fix Android compatibility by adding missing field into ADTS packets (#749) 2021-12-23 19:13:25 +01:00
aler9
82d8dfbc6d hls: correctly compute segment duration
Segment duration is now (current PTS - first PTS in segment)
Previously it was (last PTS in segment - first PTS in segment)
2021-11-30 21:30:32 +01:00
aler9
9398cea0c2 update golangci-lint 2021-09-09 23:05:54 +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
b65207012c update gortsplib 2021-08-25 19:51:59 +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
96cb56621a hls: add primary playlist 2021-08-16 18:07:10 +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
c3c643c602 hls: move muxer into dedicated object 2021-07-24 18:31:54 +02:00