Commit Graph

105 Commits

Author SHA1 Message Date
Alessandro Ros
e8bdad8a1e rename Data into Unit (#1556) 2023-03-10 12:44:59 +01:00
Alessandro Ros
2cffea6d51 rtmp: fix crash when receiving unexpected video packets (#1459) (#1504) 2023-02-23 11:22:28 +01:00
Alessandro Ros
b461f15a4c rpicamera: support changing parameters without interrupting the stream (#1463) 2023-02-13 12:12:04 +01:00
Alessandro Ros
b02d3b83c7 Send additional fields to the external authentication URL (#1408)
* send 'protocol' to the external authentication URL

* send session ID to the external authentication URL
2023-01-22 19:48:33 +01:00
aler9
2de0941e5c update gortsplib 2023-01-08 13:36:27 +01:00
aler9
e3fff72b7c move format processors into dedicated folder 2023-01-05 12:54:00 +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
fbf8e82db5 update gortsplib 2022-12-28 20:32:03 +01:00
aler9
455b8beff7 simplify code 2022-12-27 18:01:58 +01:00
Alessandro Ros
ad52b3fab7 Support publishing with RTMP and H265 (for OBS Studio) (#1333)
* support publishing with RTMP and H265 (for OBS Studio)

* rtmp source: block H265 tracks
2022-12-27 13:55:30 +01:00
Alessandro Ros
5efe97abf1 Support reading with WebRTC (#1242) 2022-12-16 00:50:47 +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
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
423bb61daa use UUIDs as IDs in all entities (#1234) 2022-11-09 19:31:52 +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
fad3474805 rtmp server: print only tracks that are effectively being read 2022-10-19 17:03:04 +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
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
e255d004e3 rtmp server: change value of MessageStreamID of outgoing messages 2022-08-16 18:44:31 +02:00
Alessandro Ros
820ba067f2 support RTMPS (#1089) 2022-08-16 18:44:31 +02:00
aler9
51e0bbd975 rtmp server: stop inserting a AV_SEQHDR message before every IDR
AV_SEQHDR contains SPS and PPS.

It is useless to resend it after initialization since SPS/PPS are
automatically added before every IDR.
2022-08-16 18:44:31 +02:00
aler9
176f2f0729 rtmp: invert flag of InitializeServer() and InitializeClient() 2022-08-16 18:44:31 +02:00
aler9
cb8aec8844 print track codecs into logs 2022-08-15 16:29:40 +02:00
aler9
3606472e82 generate RTP packets after H264 remuxing
Previously, RTP packets coming from sources other than RTSP (that
actually are RTMP and HLS) were generated before the H264 remuxing, and
that leaded to invalid streams, expecially when sourceOnDemand is true
and the stream has invalid or dynamic SPS/PPS.
2022-08-14 13:03:04 +02:00
aler9
5ba46e6c8f update gortsplib 2022-08-14 12:50:04 +02:00
aler9
af7a815f83 update gortsplib 2022-08-05 23:50:45 +02:00
aler9
092a2be3a8 api: add "created" field to RTSP sessions, RTMP connections, HLS muxers 2022-08-05 14:39:07 +02:00
aler9
055e08ac6c remove "on" prefix from most communication functions between components 2022-08-04 21:07:45 +02:00
Alessandro Ros
9e6abc6e9f rtmp: rewrite implementation of rtmp connection (#1047)
* rtmp: improve MsgCommandAMF0

* rtmp: fix MsgSetPeerBandwidth

* rtmp: add message tests

* rtmp: replace implementation with new one

* rtmp: rename handshake functions

* rtmp: avoid calling useless function

* rtmp: use time.Duration for PTSDelta

* rtmp: fix decoding chunks with relevant size

* rtmp: rewrite implementation of rtmp connection

* rtmp: fix tests

* rtmp: improve error message

* rtmp: replace h264 config implementation

* link against github.com/notedit/rtmp

* normalize MessageStreamID

* rtmp: make acknowledge optional

* rtmp: fix decoding of chunk2 + chunk3

* avoid using encoding/binary
2022-07-17 15:17:18 +02:00
aler9
67e8a01d56 rtmp: split net.Conn from rtmp.Conn 2022-07-09 17:25:33 +02:00
aler9
f28540b9f4 update gortsplib 2022-07-05 23:46:32 +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
aler9
e45820b2c0 hls server: show real client IPs when behind a proxy (#955) 2022-06-21 13:54:19 +02:00
aler9
3e5f62156d fix DTS error in case of H264 NALUs without POC 2022-06-15 10:50:59 +02:00
aler9
05bac43177 rtmp: fix compatibility with some dji drones (#928) 2022-06-11 00:19:06 +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
4073013f68 hls muxer: stop normalizing PTS 2022-06-02 22:37:46 +02:00
aler9
acd788d632 update gortsplib 2022-06-02 20:58:48 +02:00
aler9
2ed1aa3d11 hls muxer, rtmp server: extract DTS from samples 2022-06-02 12:42:59 +02:00
aler9
13fb24da39 fix rtmp -> rtsp audio conversion (#932) 2022-05-13 16:59:52 +02:00
aler9
0c4f6e2d43 rtmp server: fix bias error in AAC DTS 2022-05-10 23:35:19 +02:00
aler9
901eae2f6b fix bias error in AAC timestamp 2022-05-10 13:29:32 +02:00
aler9
35b3541e4f hls client: add limit on AU size 2022-04-29 12:02:11 +02:00