mirror of
https://github.com/cupcakearmy/livestream.git
synced 2024-12-21 15:46:33 +00:00
video streaming
This commit is contained in:
parent
743290d462
commit
a666c01300
27
video/README.md
Normal file
27
video/README.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Livestream
|
||||||
|
|
||||||
|
Dockerized livestream server based on nginx that serves HLS and DASH.
|
||||||
|
|
||||||
|
## Quickstart 💥
|
||||||
|
|
||||||
|
```
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Setup 🏗
|
||||||
|
|
||||||
|
Tweak `nginx.conf` to your likings if necessary.
|
||||||
|
|
||||||
|
## Usage 👾
|
||||||
|
|
||||||
|
Stream to it with [OBS](https://obsproject.com/)
|
||||||
|
|
||||||
|
Settings -> Stream:
|
||||||
|
- Stream Type = custom
|
||||||
|
- Url = rtmp://localhost/mychannel
|
||||||
|
- Stream Key = some *non empty* string
|
||||||
|
|
||||||
|
Settings -> Output:
|
||||||
|
- Output Mode = Simple
|
||||||
|
- Streaming
|
||||||
|
- Bitrate = depends on resolution and quality. check [here](https://support.video.ibm.com/hc/en-us/articles/207852117-Internet-connection-and-recommended-encoding-settings)
|
50
video/time/fittext.js
Normal file
50
video/time/fittext.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
/*global jQuery */
|
||||||
|
/*!
|
||||||
|
* FitText.js 1.2
|
||||||
|
*
|
||||||
|
* Copyright 2011, Dave Rupert http://daverupert.com
|
||||||
|
* Released under the WTFPL license
|
||||||
|
* http://sam.zoy.org/wtfpl/
|
||||||
|
* Modified by Niccolo Borgioli github.com/cupcakearmy
|
||||||
|
*
|
||||||
|
* Date: Thu May 05 14:23:00 2011 -0600
|
||||||
|
*/
|
||||||
|
|
||||||
|
((window) => {
|
||||||
|
window.fittext = (element, kompressor, options) => {
|
||||||
|
|
||||||
|
const compressor = kompressor || 1,
|
||||||
|
settings = Object.assign({
|
||||||
|
'minFontSize': Number.NEGATIVE_INFINITY,
|
||||||
|
'maxFontSize': Number.POSITIVE_INFINITY
|
||||||
|
}, options)
|
||||||
|
|
||||||
|
const resizer = () => element.style.fontSize = `${Math.max(Math.min(element.offsetWidth / (compressor * 10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize))}px`
|
||||||
|
|
||||||
|
resizer()
|
||||||
|
window.addEventListener('resize', resizer)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
window.textfill = (element, options) => {
|
||||||
|
const ourText = element.querySelector('span');
|
||||||
|
const maxHeight = element.offsetHeight;
|
||||||
|
const maxWidth = element.offsetWidth;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let fontSize = Number.POSITIVE_INFINITY;
|
||||||
|
let textHeight;
|
||||||
|
let textWidth;
|
||||||
|
|
||||||
|
const resizer = () => {
|
||||||
|
do {
|
||||||
|
ourText.style.fontSize = `${fontSize}px`
|
||||||
|
textHeight = ourText.offsetHeight
|
||||||
|
textWidth = ourText.offsetWidth
|
||||||
|
fontSize = fontSize - 1
|
||||||
|
} while ((textHeight > maxHeight || textWidth > maxWidth) && fontSize > 3)
|
||||||
|
}
|
||||||
|
resizer()
|
||||||
|
}
|
||||||
|
})(window)
|
59
video/time/time.html
Normal file
59
video/time/time.html
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
#clock {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="clock">
|
||||||
|
<span>
|
||||||
|
Test
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src='fittext.js'></script>
|
||||||
|
<!-- <script src='https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js'></script> -->
|
||||||
|
<script>
|
||||||
|
textfill(document.querySelector('#clock'))
|
||||||
|
|
||||||
|
// var urlParams;
|
||||||
|
// (function () {
|
||||||
|
// var match,
|
||||||
|
// pl = /\+/g, // Regex for replacing addition symbol with a space
|
||||||
|
// search = /([^&=]+)=?([^&]*)/g,
|
||||||
|
// decode = function (s) {
|
||||||
|
// return decodeURIComponent(s.replace(pl, " "));
|
||||||
|
// },
|
||||||
|
// query = window.location.search.substring(1);
|
||||||
|
// urlParams = {};
|
||||||
|
// while (match = search.exec(query))
|
||||||
|
// urlParams[decode(match[1])] = decode(match[2]);
|
||||||
|
// })();
|
||||||
|
// var output = document.getElementById("output");
|
||||||
|
// if (urlParams["style"]) output.setAttribute("style", urlParams["style"]);
|
||||||
|
// if (urlParams["bodyStyle"]) document.body.setAttribute("style", urlParams["bodyStyle"]);
|
||||||
|
// var c;
|
||||||
|
// setInterval(
|
||||||
|
// c = function () {
|
||||||
|
// output.innerText = moment().format(urlParams["format"] || '');
|
||||||
|
// }, 1000);
|
||||||
|
// c();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user