Commit graph

2472 commits

Author SHA1 Message Date
Thulinma
200e1e4a1c WS/MP4 reliability edits:
- Stream selecting now obeys new "maxdelay" capa entry
- Output::liveSeek now takes an optional bool argument to indicate only rate control should be applied (no seeking)
- dataWaitTimeout is now configurable per-output, defaults to the old 25s
- WS/MP4 uses the new liveSeek with rate-control only
- WS/MP4 uses the new dataWaitTimeout and sets it to 4.5s
- WS/MP4 uses the new maxdelay capa, sets it to 5s
- WS/MP4 will now auto-reselect tracks if a track is dropped for data wait timeout or disappeared from metadata reasons
- Added support for jitter information in WS/MP4 protocol
- Robustify sendWebsocketCodecData being ran when sendHeader is ran
- Fix race condition when switching video tracks before previous video track has sent a single frame
2022-01-22 23:59:09 +01:00
Thulinma
a0eb42f1dd Added human readable name in info JSON output for sources 2022-01-22 23:53:57 +01:00
Thulinma
b1740e9bd3 Fixed livepeer process disconnecting track 0 instead of actual track ID 2022-01-22 23:47:38 +01:00
Thulinma
61c08be425 TS UDP output now defaults to all supported tracks 2021-12-24 15:09:41 +01:00
Thulinma
ad4c1abd0b Playlist support fixed 2021-12-24 15:09:36 +01:00
Marco van Dijk
684df4b23d Added utcoffset field to metadata to display VoD program time if supported by output 2021-11-24 13:09:11 +01:00
Marco van Dijk
19d7c9fe07 Added HLS DVR mode
Moved some duplicate code to seperate functions for readability
Fix EXT-X-PROGRAM-DATE-TIME tag for VoD
Set bootMSoffset for live DVR streams
Implemented readExistingHeader for HLS input
set zUTC time based on EXT-X-PROGRAM-DATE-TIME tag rather than guessing
2021-11-24 13:09:11 +01:00
Marco van Dijk
3d9ed39396 setstreamVodField and streamLiveField no longer mutually exclusive
Removed curPage map from IO. bufferFrame now creates this variable locally and passes it to bufferStart, bufferFinalize and bufferNext
Fix keyNum selection with mixed live & VoD data
Fix bufferframe to handle mixed VoD and live
Added check to bufferFrame to not start the countdown timer for removing live pages
Fixed countdown timer being set using keyNum rather than pageNumber, which resulted in the wrong pages being deleted
livePage variable moved from static to private variable to correctly handle multithreaded inputs

# Conflicts:
#	src/io.cpp
#	src/output/output.cpp
2021-11-22 15:38:58 +01:00
Marco van Dijk
d1358400f7 Added ability to output locally to playlist & TS files 2021-11-22 14:29:43 +01:00
Balder
598b384078 Edits for fixing stream names with .m3u in the name. 2021-11-22 14:29:43 +01:00
Balder
c542155e10 added fallbackstream to tsudp input 2021-11-22 11:44:44 +01:00
Thulinma
6733bf2a20 Fixed all ARM-related issues/warnings/etc 2021-11-04 18:49:27 +01:00
Thulinma
dae32ede11 Added Util::packetSorter with async/sync modes, set DTSC outputs to use async mode 2021-11-03 14:15:52 +01:00
Thulinma
6042c1ea70 Added per-protocol default track sorting option 2021-11-03 14:15:46 +01:00
Marco van Dijk
01f11dcfda HLS input improvements:
- Added isOpen flag to the SegmentDownloader, so that we do not parse the data remaining from parseStreamHeader
- In inputHLS::firstSegment, use streamIsLive to determine vod vs live, rather than the size of userSelect
- Replaced check against 'smaller than zero', which always fails due to overflow of unsigned int
- Added print before downloading main playlist
2021-11-01 16:39:09 +01:00
Thulinma
f8251cc115 Fix fallback stream, added support for stream variables in fallback stream 2021-10-27 15:39:34 +02:00
Thulinma
aa77d86df1 Have MistInTS set the BootMsOffset correctly for live inputs 2021-10-20 13:41:20 +02:00
Thulinma
55c03fd886 Livepeer process:
- Cleanup
- Made everything except for bitrate and name optional, auto-detects and sanitizes and configures sane values in almost all cases.
- Fix sorting of profile options
- Fixed deadlock when video track does not yet have a valid width and/or height
- Fixed race condition during process boot
2021-10-19 22:29:42 +02:00
Marco
8b59c9abe7 Fix recstart/recstop parameters 2021-10-19 22:29:42 +02:00
Thulinma
4a712404ed Added "hold" command to WebRTC 2021-10-19 22:29:42 +02:00
Thulinma
76db36dfed Added v2 track selectors 2021-10-19 22:29:42 +02:00
Thulinma
194b6e1388 HLS/HTTP fixes:
- Optimize URIReader class to not close connections if not needed
- reConnector now works for non-GET requests with GET params
- Chunk sending mode correctly kept for HLS
- Removed lots of H.Clean() from HLS that weren't needed
- Improved HTTP output class request handling logic
- Removed firstRun from HTTP output class; no longer needed
2021-10-19 22:29:42 +02:00
Thulinma
c02b9ef265 Fixed WebRTC packet counter for receiving broadcasts 2021-10-19 22:29:42 +02:00
Thulinma
bf2ce9a422 Implemented new active_streams API, backwards compatible with old API 2021-10-19 22:29:42 +02:00
Thulinma
7d95a75492 Moved inputBuffer::fillBufferDetails to DTSC::Meta::getHealthJSON 2021-10-19 22:29:42 +02:00
Thulinma
f8f799422b Fixed statistics returning random data right after stream start and/or reload 2021-10-19 22:29:42 +02:00
Thulinma
829c8b7948 Fixed buffer not considering all processes running if there is no stream config. 2021-10-19 22:29:42 +02:00
Thulinma
ad9e72798a Increase VoD lookahead from 20 to 120 seconds 2021-10-19 22:29:42 +02:00
Thulinma
7067e9ae52 Change debugging level for part size checks from WARN to INFO 2021-10-19 22:29:42 +02:00
Thulinma
4358215692 Removed target not changed message 2021-10-19 22:29:42 +02:00
Thulinma
4cce8baf9b Fixed zero-length sortset causing crash in MP4 output 2021-10-19 22:29:42 +02:00
Thulinma
3c09b085c0 Fix recursing flag not being false in initial doSync 2021-10-19 22:29:42 +02:00
Thulinma
f8c8f68c19 Fix HLS being seen as input during init 2021-10-19 22:29:42 +02:00
Thulinma
0a3c399a98 Ensure key and page numbers are all 32 bits, robustify/fix packet handling internals 2021-10-19 22:29:42 +02:00
Thulinma
2a5a808107 WebRTC: Fixes to packet timing and loss statistics 2021-10-19 22:29:42 +02:00
Thulinma
3ba7723b10 BootMSOffset propagation in MistProcMKVExec 2021-10-19 22:29:42 +02:00
Thulinma
616c92eaa5 Improved exit reason logging in Mist::Input
# Conflicts:
#	src/input/input.cpp
2021-10-19 22:29:42 +02:00
Thulinma
118ba102f2 Fixed mkvexec race condition in shutdown on uninitialized streams 2021-10-19 22:29:42 +02:00
Thulinma
8cd0bff105 RTMP improvements for rollover behaviour 2021-10-19 22:29:42 +02:00
Thulinma
73a73abbd7 Added iceservers property to WebRTC, support passing it to the player. 2021-10-19 22:29:42 +02:00
Thulinma
248bb9c61e Sanitycheck extra sanity checks 2021-10-19 22:29:42 +02:00
Thulinma
e9ed76d361 USP CMAF push: Change to track identifier to allow for resuming 2021-10-19 22:29:42 +02:00
Thulinma
c95ab07e04 Added loss stats to prometheus output 2021-10-19 22:29:42 +02:00
Thulinma
5a53701a88 Fixed no-bframes MKV input unnecessarily delaying the stream by 16 frames every keyframe 2021-10-19 22:29:42 +02:00
Thulinma
c4e6f0ad31 Restore RTMP parameters in request URLs, handle variable parsing in trigger responses 2021-10-19 22:29:42 +02:00
Thulinma
4af7f3e9ed Load balancer:
- Tagging system + tweaks to display of offline servers in overviews
- Fixed stream name decode + tag_adjust hiding
- Added ?ingest=PERCENT to get best ingest point assuming "PERCENT" CPU usage is needed to ingest
- Fixed name length bug
- Fixed multi-add bug
- Improved shutdown speed
- Fixed add/remove race condition issues
- Robustify
2021-10-19 22:29:41 +02:00
Thulinma
e884dc0c32 Added tagging system + API to controller 2021-10-19 22:29:41 +02:00
Thulinma
9953cd6ee2 Generic HTTP handler
# Conflicts:
#	src/output/output_mp4.cpp
#	src/output/output_mp4.h
2021-10-19 22:29:41 +02:00
Thulinma
0c8261bf2f Added timeoffset URL param to RTMP push input, for pushing with forced time offset 2021-10-19 22:29:41 +02:00
Thulinma
209cd4c0fc Process system updates:
All processes:
- Added process status system and relevant API calls
- Added ability to set track masks for input/output in processes
- Added support for unmasking tracks when there is a push target, by the "unmask" parameter.
- Added track unmasking support for processes on exit/error
- Make processes start faster, if possible, in the first few seconds of a stream
- Delay stream ready state if there are processes attempting to start

Livepeer process updates:
- Added Content-Resolution header to MistProcLivepeer as per Livepeer's request
- Renamed transcode from "Mist Transcode" to source stream name
- Added ability to send audio to livepeer
- Robustified livepeer timing code, shutdown code, and improved GUI
- Prevent "audio keyframes" from starting segments in MistProcLivepeer
- Multithreaded (2 upload threads) livepeer process
- Stricter downloader/uploader timeout behaviour
- Robustness improvements
- Fix small segment size 😒
- Streamname correction
- Prevent getting stuck when transcoding multiple qualities and they are not equal length
- Corrected log message print error
- Race condition fix
- Now always waits for at least 1 video track
2021-10-19 22:29:41 +02:00