Commit graph

176 commits

Author SHA1 Message Date
Gabe Kangas
dfeba53f08 Reduce the amount of time between start of stream and when we show as online. Can bump this back up if needed. 2020-10-08 14:27:42 -07:00
Gabe Kangas
bcf4cb09e7 Break rtmp read loop after disconnect 2020-10-07 19:59:55 -07:00
Gabe Kangas
d7e355bce1
Connected clients admin API (#217)
* Add support for ending the inbound stream. Closes #191

* Add a simple success response to API requests

* Connected clients API with geo details

* Post-rebase cleanup

* Make setting and reading geo details separate operations to unblock and speed up

* Rename file

* Fire geoip api call behind goroutine

* Add comment

* Post-rebase fixes

* Add support for the MaxMind GeoLite2 GeoIP database
2020-10-06 23:14:33 -07:00
leowmjw
769fc3a561
Fixes #211: Update mod paths (#221)
Co-authored-by: Michael Leow <mleow@moneylion.com>
2020-10-05 10:07:09 -07:00
Gabe Kangas
922dfec77a
Remove custom paths and add constants (#216) 2020-10-03 14:35:03 -07:00
Gabe Kangas
f4fdc6c951
Current broadcaster details admin api (#206)
* Add support for ending the inbound stream. Closes #191

* Add a simple success response to API requests

* Store inbound broadcast details for admin purposes

* Add /api/admin/broadcaster endpoint

* Reset broadcaster on disconnect

* Move controller to admin directory
2020-10-02 00:12:47 -07:00
Gabe Kangas
9b7784634b
First pass at YP registration/configuration (#209)
* Spike: Ping YP service with instance details

* WIP: Add to the config to support YP

* Add YP response endpoint

* Handle YP errors. Use config. Off by default

* Show message about YP support on launch

* Add animated gif preview when generating thumb

* Increase quality of preview gif and only create it if YP is enabled

* Do not allow re-registration by clearing the key

* Make large and small logos actually structured

* Change log level

* Fix default YP service URL

* Point to default hostname

* Set default value for YP to false
2020-10-01 23:55:38 -07:00
Anoop
6946d4b3ea
Make video segment filename unique (#214)
* Make video segment filename unique

* fix typo

* Remove type casting function
2020-10-01 23:34:29 -07:00
Gabe Kangas
7b64fc7c30
Disconnect stream Admin API + HTTP Basic Auth (#204)
* Create http auth middleware

* Add support for ending the inbound stream. Closes #191

* Add a simple success response to API requests
2020-10-01 18:16:58 -07:00
Gabe Kangas
ef3796a033 Use default video variants if none supplied. Fixes #199 2020-09-27 20:12:45 -07:00
Gabe Kangas
519be9d3b4 Don't update viewer counts if a live stream session is not active. 2020-09-24 20:27:47 -07:00
Gabe Kangas
fc45645280 Reset session stats when we cleanup the session. Closes #180 2020-09-24 19:38:24 -07:00
Gabe Kangas
cb2794f68c Fix cleanup. ticker -> timer and stop reinstantiation 2020-09-23 21:35:27 -07:00
Gabe Kangas
6903db8579 Re-create offline state after wiping HLS files. For #153 2020-09-17 10:31:41 -07:00
Bradley Hilton
dd9267f1ee
Reset the directories when the stream gets disconnected (#152)
* Reset the directories when the stream gets disconnected

* Cleanup after a delay

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2020-09-16 13:31:21 -07:00
Gabe Kangas
d21f136120
Transcoder updates for bitrate validator warnings (#106)
* Transcoder updates for validator warnings (gop, max-bitrates) for #50

* Make the variant settings easier to set/read in code

* Update test to reflect update to transcoder

* Reduce the buffer to give it a little more room to improve the quality. It feels a bit crunched right now.

* Fix test due to changed bitrate buffer ratios

* Tweak buffer size one more time to get errors in the validator to zero

* Saw errors w/ different bitrates, so tweaking it again
2020-08-06 12:19:35 -07:00
Gabe Kangas
b0b5801c5f
Stop storing messages in memory and pull from persistence. Closes #81 (#105) 2020-08-05 21:01:06 -07:00
Gabe Kangas
d9509f5606
Chat updates (#92)
* Send PONG responses to PINGs

* Split out client IDs for viewer counts vs. websocket IDs

* WIP username change event

* Display username changes

* Revert commented out code

* Add support for building from the current branch

* Fix PONG

* Make username changes have a unique ID

* Add a version param to js to cachebust
2020-07-28 21:30:03 -07:00
Matt Steele
87636a4183
Support separate S3 serving endpoint (#91)
* Add s3 serving endpoint config. Fixes #90

* Move CDN endpoint generation to GenerateRemotePlaylist

* Include HLS path

* Add docs and config

* Prefer sprintf to string concatenation

* Use config method

* gofmt
2020-07-28 13:17:39 -07:00
Matt Steele
a20d2fce46
Add ACL option to s3 config (#89) 2020-07-27 21:41:51 -07:00
Gabe Kangas
5ce9a4928c Fix timeout buffer after going offline. Closes #84 2020-07-22 23:54:36 -07:00
Gabe Kangas
43df6c432e Fix possible crash for concurrent map writes 2020-07-22 23:09:11 -07:00
Gabe Kangas
a7812f8d04 Increase the delay for the welcome chat message a bit 2020-07-20 00:22:32 -07:00
Gabe Kangas
b754ee01bf Remove IPFS. For #74 2020-07-19 21:15:53 -07:00
Ginger Wong
a3613612eb Merge branch 'master' into gek/current-stream-duration 2020-07-19 15:17:03 -07:00
Gabe Kangas
c0e4f647a2 Show chat by default. Closes #72. Show placeholder text that no registration is needed. Closes #73 2020-07-19 15:15:39 -07:00
Gabe Kangas
2855027f22
Use endpoint for chat history instead of websocket (#67)
* Change placeholder when chat is disabled

* Use the /chat endpoint for bulk chat history population instead of websocket. For #47

* Force LiveUI/seek bar during live to show. Closes #11.

* Change pulling chat history into app.js

* Force new messages to have visability = true
2020-07-18 17:27:04 -07:00
Gabe Kangas
8ba0b6d7ce Show in the UI how long the user has been streaming for. Closes #59 2020-07-18 15:08:43 -07:00
Gabe Kangas
2afde7b3f9 Fix missing default video bitrate if none is supplied 2020-07-15 23:56:14 -07:00
Gabe Kangas
a277012650 Limit the backlog of chat messages to recent messages. For #47 2020-07-15 22:06:24 -07:00
Gabe Kangas
a8fe8a1cfa Add support for specifying the path for chat db. Closes #61 2020-07-15 17:20:47 -07:00
Gabe Kangas
5fe9955f26 Increase the time between broadcast started and when we are marked as online 2020-07-15 16:14:12 -07:00
Gabe Kangas
95fd8aed96 Added a basic transcoder test 2020-07-14 18:54:52 -07:00
Gabe Kangas
a7a9ae0984 Fix incorrect logging method 2020-07-14 16:48:41 -07:00
Gabe Kangas
a11999c3c0 Log cleanup 2020-07-13 23:55:12 -07:00
Gabe Kangas
ec83e11bd9 Approximately 3 segments should be available before playback can start 2020-07-13 23:51:55 -07:00
Gabe Kangas
dd1b9411bf Add verbose logging for RTMP metadata 2020-07-13 23:32:35 -07:00
Gabe Kangas
4559bde977 Most things have 30 as a standard fps instead of 25 2020-07-13 20:58:45 -07:00
Gabe Kangas
a9a83f78a3 Set a default framerate so we can specify the correct iframe settings 2020-07-13 19:37:25 -07:00
Gabe Kangas
fe102e7164 Make setting the offline content optional 2020-07-13 15:13:24 -07:00
Gabe Kangas
0027957a33 Make setting the max # of segments in playlist optional 2020-07-13 14:55:21 -07:00
Gabe Kangas
44806d1a8e Make setting save location paths optional 2020-07-13 14:45:54 -07:00
Gabe Kangas
d51901e191 Make setting the segment length optional 2020-07-13 14:39:44 -07:00
Gabe Kangas
51e2e68017 Support default path of ffmpeg and not needing to specify it in the config 2020-07-13 14:32:12 -07:00
Gabe Kangas
8cedf05214 Basic chat persistence for #26 2020-07-12 14:59:40 -07:00
Gabe Kangas
c553637521 Cleanup 2020-07-12 09:52:54 -07:00
Gabe Kangas
2bd016ae15 Add default video settings if none are provided 2020-07-12 09:52:54 -07:00
Gabe Kangas
873e2535f8 Additional log msg 2020-07-12 09:52:54 -07:00
Gabe Kangas
1409477dce Use the built-in AAC codec 2020-07-12 09:52:54 -07:00
Gabe Kangas
a0d27df8c6 Re-work RTMP for #34 2020-07-12 09:52:54 -07:00
Gabe Kangas
8f832dad5a Add support for stopping the transcoding process 2020-07-12 09:52:54 -07:00
Gabe Kangas
072abf2976 Fix log message 2020-07-12 09:52:54 -07:00
Gabe Kangas
6624670813 Do not die if there is a missing audio or video stream in source. #34 2020-07-12 09:52:54 -07:00
Gabe Kangas
f54d1eba38 Add additional logging of ffmpeg output to file. Help troubleshoot #34 2020-07-12 09:52:54 -07:00
Gabe Kangas
baaf556c54 Log level change 2020-07-12 09:52:54 -07:00
Gabe Kangas
ef295b6794 Cleanup + poll connection for disconnected state. For #34 2020-07-12 09:52:54 -07:00
Gabe Kangas
0aa3159372 Works if I mux restream to ts, not flv 2020-07-12 09:52:54 -07:00
Gabe Kangas
43d434747b Attempt with Joy5 2020-07-12 09:52:54 -07:00
Gabe Kangas
d7a2ffcca4 Add timestamp to messages. For #26 2020-07-11 19:09:01 -07:00
Gabe Kangas
4344ab6b00 Revert "Create thumbnail from end of segment. Closes #14"
This reverts commit 266fe51028.
2020-07-06 22:39:07 -07:00
Gabe Kangas
081024569e Another logging tweak 2020-07-06 22:24:55 -07:00
Gabe Kangas
266fe51028 Create thumbnail from end of segment. Closes #14 2020-07-06 22:16:40 -07:00
Gabe Kangas
259923b303 Set logging preferences via command line flags. Closes #20 2020-07-06 21:27:31 -07:00
Gabe Kangas
1133edf716 Use the highest quality video segment to creat thumbnails from. Closes 2020-07-06 20:34:34 -07:00
Gabe Kangas
3e042866ec Fix multiple bitrates not being uploaded to s3. Closes #40 2020-07-05 22:03:53 -07:00
Gabe Kangas
ae2e98877b Remove no longer used property 2020-06-28 15:42:48 -07:00
Gabe Kangas
f949adb40c Remove panic and log error if file no longer exists. Closes #31 2020-06-28 15:30:43 -07:00
Gabe Kangas
a31076a591 Fix I guess what was a typo 2020-06-25 18:26:54 -07:00
Gabe Kangas
04dc0796d8
New video transcoder (#27)
* New video transcoder

* Set a smaller max muxing size + logging tweaks

* No need to return an err since it wiill panic anyway

* Use a default encoder preset if one is not supplied

* Rename to NewTranscoder.  Add comments.

* Rename Bitrate to VideoBitrate. Config file changes required with this rename.

* Allow overrides of segment length. Allow offline stream to live in a single segment

* Append offline state video to existin HLS stream instead of overwriting because players do not like that

* Make properties private as they do not need to be exported
2020-06-25 17:44:47 -07:00
Gabe Kangas
4132cf6d09 Move where the message type is set, and standardize on all caps CHAT 2020-06-24 23:20:19 -07:00
Gabe Kangas
8878ca1e88 Have both connect and disconnect time in the status API 2020-06-24 22:52:05 -07:00
Gabe Kangas
a297e33eff Make IDs for chat messages generated server-side, not client. For #26 2020-06-24 22:00:49 -07:00
Gabe Kangas
a3273e9deb Value injection at build time seems to only work for the main package 2020-06-24 12:55:49 -07:00
Bradley Hilton
abb2f363af
Decouple chat from core and add chat rest api (#25)
* Decouple the chat package from the core

* Add rest api endpoints for the chat aspect
2020-06-23 13:11:01 -07:00
Bradley Hilton
fe96739f60
Fix a memory leak with the chat aspect. (#23)
Essentially, the for loop wasn't being returned out
of and that caused the read listener to never be
let up and released to the gc
2020-06-22 23:52:50 -07:00
Bradley Hilton
487bd12444
Project restructure (#18)
* First pass at restructuring the project; untested but it does compile

* Restructure builds and runs 🎉

* Add the dist folder to the gitignore

* Update core/playlist/monitor.go

* golint and reorganize the monitor.go file

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2020-06-22 18:11:56 -07:00