Add owncast.online as a submodule for convenient browsing of documentation from repo
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "doc"]
|
||||
path = doc
|
||||
url = https://github.com/owncast/owncast.github.io
|
@ -1,7 +1,7 @@
|
||||
<br />
|
||||
<p align="center">
|
||||
<a href="https://github.com/owncast/owncast" alt="Owncast">
|
||||
<img src="doc/logo.png" alt="Logo" width="200">
|
||||
<img src="https://owncast.online/images/logo.png" alt="Logo" width="200">
|
||||
</a>
|
||||
|
||||
|
||||
@ -38,8 +38,8 @@
|
||||
## About The Project
|
||||
|
||||
<p align="center">
|
||||
<a href="doc/owncast-screenshot.png">
|
||||
<img src="doc/owncast-screenshot.png" width="70%">
|
||||
<a href="https://owncast.online/images/owncast-screenshot.png">
|
||||
<img src="https://owncast.online/images/owncast-screenshot.png" width="70%">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
1
doc
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 54a0ee13964c70585c24a9b5869604373faaa926
|
@ -1,10 +0,0 @@
|
||||
|
||||
[Read the overview first before digging into any of the detailed documentation](../README.md)
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [FAQ](faq.md)
|
||||
* [Quickstart](quickstart.md)
|
||||
* [Configuration](configuration.md)
|
||||
* [Encoding](encoding.md)
|
||||
* [S3 Storage](S3.md)
|
141
doc/S3.md
@ -1,141 +0,0 @@
|
||||
Here are some setup details, general information and tips specific to using external storage.
|
||||
|
||||
Choose your storage provider of choice. Yours not listed? [File an issue](https://github.com/gabek/owncast/issues) and we'll test and write up some documentation for it.
|
||||
|
||||
* [Linode Object Storage](#linode-object-storage)
|
||||
* [AWS S3](#aws-s3)
|
||||
* [Wasabi](#wasabi-cloud-storage)
|
||||
|
||||
## [Linode Object Storage](https://www.linode.com/pricing/?r=588ad4bf08ce8394e8eb11f0a463fde64637af9d/#row--storage)
|
||||
|
||||
250 GB storage + 1 TB Outbound Transfer for $5/mo.
|
||||
|
||||
Linode Object Storage is a good choice if you're already using Linode to host your server. It should be fast to transfer your video from your server to their storage service, and their pricing will probably just be the flat $5/mo for you, so it's easy to know what you're paying.
|
||||
|
||||
<img src="linodebucket.png" width="300px">
|
||||
|
||||
* Create a new bucket at the [Linode Object Storage](https://cloud.linode.com/object-storage/buckets) admin page.
|
||||
* Edit your config file and change the S3 `endpoint` to match the hostname listed below your newly created bucket that looks something like `myvideo.us-east-1.linodeobjects.com`, the bucket name to match the one you just created and the S3 region to match the `us-east-1` equivalent of the above hostname.
|
||||
* Using the [Linode Object Access Keys](https://cloud.linode.com/object-storage/access-keys) page create a new Access Key and add the Key and Secret to your `config.yaml` file.
|
||||
|
||||
In the following steps Linode requires you to interact with your bucket using the s3cmd tool. So install that on your terminal and configure it.
|
||||
|
||||
Run `s3cmd --configure` and fill in the values with what is currently in your config file. It should look similar to this:
|
||||
```
|
||||
Access Key: ABC12334
|
||||
Secret Key: fj3kd83jdkh
|
||||
Default Region: US
|
||||
S3 Endpoint: us-east-1.linodeobjects.com
|
||||
DNS-style bucket+hostname:port template for accessing a bucket: us-east-1.linodeobjects.com
|
||||
Use HTTPS protocol: False
|
||||
```
|
||||
|
||||
### Add permissions to access video.
|
||||
|
||||
_This part sucks_. But you only have to do it once per bucket. [These are the full instructions](https://www.linode.com/docs/platform/object-storage/how-to-use-object-storage-acls-and-bucket-policies/#bucket-policies) but let me summarize.
|
||||
|
||||
|
||||
1. Create a file called bucket_policy.json that has the following:
|
||||
```
|
||||
{
|
||||
"Statement": [
|
||||
{
|
||||
"Effect": "Allow",
|
||||
"Principal": {
|
||||
"AWS": [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
"Action": [
|
||||
"s3:GetObject"
|
||||
],
|
||||
"Resource": [
|
||||
"arn:aws:s3::MYBUCKETNAME/*"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
1. Replace `MYBUCKETNAME` with your actual bucket name.
|
||||
1. Run `s3cmd setpolicy bucket_policy.json s3://MYBUCKETNAME` replacing `MYBUCKETNAME` with your bucket name.
|
||||
1. Run `s3cmd info s3://MYBUCKETNAME` to make sure the new policy saved.
|
||||
|
||||
Now files video saved to Linode Object Storage will be readable.
|
||||
|
||||
More details about how to get started using Linode Object Storage can be found [on their documentation](https://www.linode.com/docs/platform/object-storage/how-to-use-object-storage/).
|
||||
|
||||
|
||||
### File expiration
|
||||
|
||||
Make files older than one day expire and delete themselves so you don't pay for storage of old video.
|
||||
|
||||
Full details are in [their documentation](https://www.linode.com/docs/platform/object-storage/how-to-manage-objects-with-lifecycle-policies/).
|
||||
|
||||
Create a file called `lifecycle_policy.json` with the following contents:
|
||||
|
||||
```
|
||||
<LifecycleConfiguration>
|
||||
<Rule>
|
||||
<ID>delete-all-objects</ID>
|
||||
<Prefix></Prefix>
|
||||
<Status>Enabled</Status>
|
||||
<Expiration>
|
||||
<Days>1</Days>
|
||||
</Expiration>
|
||||
</Rule>
|
||||
</LifecycleConfiguration>
|
||||
```
|
||||
|
||||
* Run `s3cmd setlifecycle lifecycle_policy.xml s3://MYBUCKETNAME`.
|
||||
* Run `s3cmd info s3://MYBUCKETNAME` and you should now see ` Expiration Rule: all objects in this bucket will expire in '1' day(s) after creation`.
|
||||
|
||||
|
||||
## AWS S3
|
||||
|
||||
AWS S3 is a good choice if you're already using AWS for your server or are comfortable using AWS for other things. If you're brand new to object storage and not using AWS already I'm not sure I'd recommend jumping into it just for Owncast. There are other options.
|
||||
|
||||
Here's some example usage and pricing for AWS S3:
|
||||
<img src="aws-price-usage.png"/>
|
||||
|
||||
### File expiration
|
||||
|
||||
You should expire old segments on your S3 bucket. [Here are some instructions on how to do that.](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-lifecycle.html)
|
||||
|
||||
* Once an object expires you won't be charged for storage, even if the object isn't deleted immediately.
|
||||
* A one day object expiration lifecycle rule on objects is as low as you can go, so use that.
|
||||
* Because AWS [rounds the expiration to midnight of the next day](https://aws.amazon.com/premiumsupport/knowledge-center/s3-lifecycle-rule-delay/) you may have a lot of old video chunks sitting around. You can make the most of this by increasing the `maxNumberInPlaylist` value in your config file to something much higher, allowing users to rewind your stream back in time further. If the video is available then you might as well make it available to your users.
|
||||
|
||||
### CORS
|
||||
|
||||
* Ugh. CORS. [You will need to enable CORS on your bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html#how-do-i-enable-cors) so the web player can access the video.
|
||||
|
||||
### CDN
|
||||
|
||||
AWS (and other S3 compatible providers) offer a feature to change the HTTP host to support CDNs. You can configure Owncast to serve media files from this host by setting the `s3.servingEndpoint` config to your CDNed host.
|
||||
|
||||
|
||||
## [Wasabi cloud storage](https://wasabi.com/content-delivery/)
|
||||
|
||||
Most people would end up paying $5.99/mo with Wasabi, and there's no additional costs for the amount of people or amount of times people access your video. So if you have a ton of viewers, this is probably a good option.
|
||||
|
||||
### Create a user and access key.
|
||||
|
||||
1. [Create a new user on Wasabi](https://wasabi.com/wp-content/themes/wasabi/docs/Getting_Started/index.html#t=topics%2FCreating_a_User.htm) for yourself.
|
||||
1. [Create a new Access Key](https://wasabi.com/wp-content/themes/wasabi/docs/Getting_Started/index.html#t=topics%2FAssigning_an_Access_Key.htm) in the Users Panel.
|
||||
1. Update your Owncast `config.json` file with the above Access Key and Secret as well as the other required details.
|
||||
|
||||
Depending on the region where your bucket lives look up the service URL [from this page](https://wasabi-support.zendesk.com/hc/en-us/articles/360015106031-What-are-the-service-URLs-for-Wasabi-s-different-regions-).
|
||||
|
||||
* Endpoint: Is the "service URL" you looked up above. Likely ` s3.wasabisys.com` or similar.
|
||||
* Bucket
|
||||
|
||||
### Making files public
|
||||
|
||||
Wasabi makes it easy to make a bucket public. [Full documentation is here](https://wasabi.com/wp-content/themes/wasabi/docs/Getting_Started/index.html#t=topics%2FMaking_Folders_and_or_Files_Public.htm), but simply select the folder and choose "_Make Public_".
|
||||
|
||||
### Expiration of old files on Wasabi
|
||||
|
||||
**Important note!** Wasabi does **NOT* seem to have a way to set a policy for deleting old files like AWS and Linode does. You may have your own way of cleaning up old files, or some other solution. But it's something to keep in mind in case you really start to build up a lot of old video files.
|
||||
|
||||
If anybody knows how to enable Lifecycle Policies on Wasabi, please [file an issue with details](https://github.com/gabek/owncast/issues).
|
Before Width: | Height: | Size: 130 KiB |
@ -1,77 +0,0 @@
|
||||
publicHLSPath: webroot/hls
|
||||
privateHLSPath: hls
|
||||
ffmpegPath: /usr/local/bin/ffmpeg
|
||||
webServerPort: 8080
|
||||
|
||||
instanceDetails:
|
||||
name: Owncast
|
||||
title: Owncast Demo Server
|
||||
logo:
|
||||
small: /img/logo128.png
|
||||
large: /img/logo128.png
|
||||
|
||||
summary: "This is brief summary of whom you are or what your stream is. demo server for Owncast. You can read more about it at owncast.online. You can edit this description in your web config file.\n\nBlathers is an owl with brown feathers. His face is white and he has a yellow beak. His arms are wing shaped and he has yellow talons. His eyes are very big with small black irises. He also has big pink cheek circles on his cheeks. His belly appears to be checkered in diamonds with light brown and white squares, similar to an argyle vest, which is traditionally associated with academia. His green bowtie further alludes to his academic nature."
|
||||
# This is relative to the webroot, not the project root. This is a markdown file that displays
|
||||
# extra content on below your video. Put whatever you want in here.
|
||||
extraUserInfoFileName: "/static/content.md"
|
||||
|
||||
tags:
|
||||
- music
|
||||
- software
|
||||
- animal crossing
|
||||
|
||||
# https://github.com/gabek/owncast/blob/master/doc/configuration.md#external-links
|
||||
# for full list of supported social links. All optional.
|
||||
socialHandles:
|
||||
- platform: github
|
||||
url: https://github.com/gabek/owncast
|
||||
- platform: instagram
|
||||
url: http://instagram.biz/owncast
|
||||
- platform: facebook
|
||||
url: http://facebook.gov/owncast
|
||||
- platform: tiktok
|
||||
url: http://tiktok.cn/owncast
|
||||
- platform: soundcloud
|
||||
url: http://soundcloud.com/owncast
|
||||
|
||||
videoSettings:
|
||||
# The length of a single segment of video.
|
||||
chunkLengthInSeconds: 4
|
||||
# Change this value and keep it secure. Treat it like a password to your live stream.
|
||||
streamingKey: abc123
|
||||
# The "Stream is offline" content displayed when a stream ends.
|
||||
offlineContent: static/offline.m4v
|
||||
|
||||
# Determine the bitrate of your stream variants.
|
||||
# See https://github.com/gabek/owncast/blob/master/doc/configuration.md#video-quality for details.
|
||||
streamQualities:
|
||||
- low:
|
||||
# Higher the bitrate, the better it looks, but it requires more bandwidth to consume.
|
||||
videoBitrate: 400
|
||||
# Resize the width to something smaller. scaledHeight is also an option. Don't use both at once
|
||||
# unless you want to chang the aspect ratio of your video.
|
||||
scaledWidth: 600
|
||||
# Don't re-encode the audio.
|
||||
audioPassthrough: true
|
||||
# The slower the preset the higher quality the video is.
|
||||
# Select a preset from https://trac.ffmpeg.org/wiki/Encode/H.264
|
||||
# "superfast" and "ultrafast" are generally not recommended since they look bad.
|
||||
encoderPreset: veryfast
|
||||
|
||||
- medium:
|
||||
videoBitrate: 800
|
||||
encoderPreset: fast
|
||||
|
||||
# Number of segments kept referenced in the HLS playlist
|
||||
files:
|
||||
maxNumberInPlaylist: 4
|
||||
|
||||
# Read https://github.com/gabek/owncast/blob/master/doc/S3.md for S3 config details.
|
||||
s3:
|
||||
enabled: false
|
||||
endpoint: https://s3.us-west-2.amazonaws.com
|
||||
servingEndpoint: https://yourcdn.example
|
||||
accessKey: ABC12342069
|
||||
secret: lolomgqwtf49583949
|
||||
region: us-west-2
|
||||
bucket: myvideo
|
@ -1,62 +0,0 @@
|
||||
# Configuration
|
||||
|
||||
The default `config.yaml` has a handful of values you can change. However, more can be customized if you need them to be. Some common changes to the config are:
|
||||
|
||||
* Your site name, logo, description and external links.
|
||||
* The **stream key** to gain access to broadcasting to your stream.
|
||||
* The path to your specific `ffmpeg` executable.
|
||||
* Video quality settings.
|
||||
* S3 file storage.
|
||||
|
||||
An example config file with additional features can be viewed at [config-example-full.yaml](config-example-full.yaml).
|
||||
|
||||
## Video Quality
|
||||
|
||||
Owncast supports HLS [Adaptive bitrate streaming](https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming), or in other words, different video qualities will be used for different network conditions.
|
||||
|
||||
You can edit the `config.yaml` file and add as many stream _variants_ as you like under the `videoSettings` block, like so:
|
||||
|
||||
```
|
||||
streamQualities:
|
||||
- low:
|
||||
bitrate: 400
|
||||
scaledWidth: 600
|
||||
encoderPreset: superfast
|
||||
- medium:
|
||||
bitrate: 800
|
||||
```
|
||||
|
||||
Please visit the [Encoding](encoding.md) document to learn about how the video pipeline with Owncast works and how you can tweak it for the best results with your specific hardware and video configurations.
|
||||
|
||||
### Important caveats
|
||||
|
||||
#### CPU Usage
|
||||
|
||||
Each bitrate variant adds significant CPU usage and slows down the overall generation of video segments. If you have a slow server running Owncast you should probably only have one bitrate variant in play. If you add more and you notice that playback becomes choppy it's likely that everything is running too slowly for consistent playback. Consider removing the additional variants and tweaking your single variant so it supports a wider variety of network conditions.
|
||||
|
||||
#### Disk Usage
|
||||
|
||||
More stream quality variants requires more disk space, since it's another copy of the video on disk. If you're serving video locally and you have enough disk space then it's probably no big deal and files will rather quickly get rotated and cleaned up. If you're using something like [S3 for storage](S3.md) then files won't get cleaned up until some point in the future, so you'll have more remote storage use in play.
|
||||
|
||||
## External links
|
||||
|
||||
`socialHandles` currently supports the following services by name:
|
||||
|
||||
* `facebook`
|
||||
* `twitter`
|
||||
* `instagram`
|
||||
* `snapchat`
|
||||
* `tiktok`
|
||||
* `soundcloud`
|
||||
* `bandcamp`
|
||||
* `patreon`
|
||||
* `youtube`
|
||||
* `spotify`
|
||||
* `twitch`
|
||||
* `paypal`
|
||||
* `github`
|
||||
* `linkedin`
|
||||
* `discord`
|
||||
* `mastodon`
|
||||
|
||||
Update your `tags` in the config to display the topics type of content you want to call attention to.
|
107
doc/encoding.md
@ -1,107 +0,0 @@
|
||||
# Encoding with Owncast
|
||||
|
||||
It's hard to give specific settings that will give you the best quality and performance with Owncast because people have different servers and requirements. However, this document aims to outline what is being done to your content and the different knobs you can tweak to get the best output for your instance..
|
||||
|
||||
**But first the basics.**
|
||||
|
||||
### What is an Owncast powered live stream?
|
||||
|
||||
Owncast takes your source stream and converts it to short, individual video segments. A list of these segments is created that your viewer's player will continue to read and play all the segments in order. This is all using a specification called [HLS](https://developer.apple.com/documentation/http_live_streaming/understanding_the_http_live_streaming_architecture) or HTTP Live Streaming.
|
||||
|
||||
<a href="https://developer.apple.com/documentation/http_live_streaming/understanding_the_http_live_streaming_architecture">
|
||||
<img src="https://docs-assets.developer.apple.com/published/88e87744a3/de18e941-81de-482f-843d-834a4dd3aa71.png">
|
||||
Image from Apple
|
||||
</a>
|
||||
|
||||
In this case Owncast works as the Media encoder, Stream segmenter, and distribution web server. However Owncast supports video being distributed via 3rd party storage as well, so in that case the video segments would be distributed from there, instead.
|
||||
|
||||
Multiple playlists are supported, one for each specific stream quality you want to provide your users. Each one increases the amount of work being completed and can slow down everything else.
|
||||
|
||||
|
||||
### Things to keep in mind.
|
||||
|
||||
1. The more work you need done to convert the video from one size, quality or format to another the more it will slow everything else down.
|
||||
1. The slower things go the slower the stream is provided to the user.
|
||||
1. If stream is provided to the user slow enough they'll start seeing buffering and errors.
|
||||
1. Converting audio counts as work, too.
|
||||
|
||||
Here's what knobs can be tweaked when trying to determine the quality or qualities you want to provide your user while balancing the amount of server resources you're consuming.
|
||||
|
||||
### **Bitrate**
|
||||
|
||||
The bitrate is the amount of data you send when you stream. A higher bitrate takes up more available internet bandwidth and create larger sized segments of video, making it take longer for viewers to download. Increasing your bitrate can improve your video quality, but only up to a certain point.
|
||||
|
||||
### **Resolution**
|
||||
|
||||
Resolution refers to the size of a video on a screen. Like bitrates you can provide multiple different sizes for different cases, but asking to resize a video amounts in additional work that needs to be performed.
|
||||
|
||||
If you change both the width and the height you may be changing the aspect ratio of the video. For example if you take a 1080x720 video and resize it to 800x800 it'll be the wrong aspect ratio and end up as a squashed square. It's recommended if you have to change the size to only change the width **or** the height, and it'll keep the aspect ratio for you.
|
||||
|
||||
### **Encoder preset**
|
||||
|
||||
A preset is a collection of options that will provide a certain encoding speed to compression ratio. A slower preset will provide better compression and result in a better looking video for the size.
|
||||
|
||||
In short:
|
||||
|
||||
You get "more bang for your buck" the slower you go. But your server will be preforming more work the slower it is.
|
||||
|
||||
**If you're trying to get better quality and smaller files** move to a slower encoding preset.
|
||||
|
||||
**If you're getting buffering, errors, or your server just can't keep up** try moving to a faster preset.
|
||||
|
||||
The default is `veryfast` but adjust as necessary.
|
||||
|
||||
The options are, in order from fastest to slowest:
|
||||
1. ultrafast
|
||||
1. superfast
|
||||
1. veryfast
|
||||
1. faster
|
||||
1. fast
|
||||
1. medium
|
||||
1. slow
|
||||
1. slower
|
||||
1. veryslow
|
||||
|
||||
From the [ffmpeg h.264 encoding guide](https://trac.ffmpeg.org/wiki/Encode/H.264).
|
||||
|
||||
### **Audio**
|
||||
|
||||
Any changes to audio when streaming is additional work in the encoding process. Luckily for most people what you're sending from your broadcasting software is generally reasonable and additional work won't be needed, even for low-bandwidth viewers. By default Owncast will not change the audio stream and instead just pass it along to the end users. However, if you need to change the audio bitrate for some reason, such as you want your low quality stream to have much lower quality audio, it'll go through the transcoding process and become `AAC` encoded audio to your viewers. But by default it's suggested to leave this as defaults and only change it if you need to.
|
||||
|
||||
### How you configure your broadcasting software matters.
|
||||
|
||||
The more you send to Owncast, the more work it has do to work with it. This means you should generally not stream to Owncast at a significantly higher or lower quality than you expect to give to your viewers. It makes no sense to stream to Owncast at 1080p if you're resizing it and downsampling it to something way smaller, because your server has to do that work. On the other hand it makes no sense to stream to Owncast with a 1000k bitrate and then make it convert it to 2000k since it won't look any better.
|
||||
|
||||
So in short: Try to reasonably figure out what you want to stream to your users and match that as best as possible when setting up your broadcasting software.
|
||||
|
||||
If you find yourself trying to squeeze better performance out of Owncast then try setting your broadcasting software to a lower quality as well as lowering the quality in your Owncast instance.
|
||||
|
||||
## Examples
|
||||
|
||||
Armed with the above knowledge it can be put into action via the `config.yaml` file under `videoSettings` -> `streamQualities`.
|
||||
|
||||
Each stream quality is given a name just for your own convinience so you can reference it by name. You can call it anything you want.
|
||||
|
||||
A simple example would be to create a quality you call "medium" that has a bitrate of 800k:
|
||||
|
||||
```
|
||||
- medium:
|
||||
videoBitrate: 800
|
||||
```
|
||||
|
||||
Or create a "high" quality at 2000k using the `faster` encoding preset.
|
||||
|
||||
```
|
||||
- high:
|
||||
videoBitrate: 2000
|
||||
encoderPreset: faster
|
||||
```
|
||||
|
||||
Or a 1000k bitrate that's resized to a width of 600, using the `superfast` preset.
|
||||
```
|
||||
- resized:
|
||||
videoBitrate: 1000
|
||||
encoderPreset: superfast
|
||||
scaledWidth: 600
|
||||
```
|
||||
|
51
doc/faq.md
@ -1,51 +0,0 @@
|
||||
<!-- vscode-markdown-toc -->
|
||||
* [Who is this for?](#Whoisthisfor)
|
||||
* [Who and what is this not for?](#Whoisthisnotfor)
|
||||
* [Why would I use this instead of Twitch, Facebook Live, or YouTube live?](#WhywouldIusethisinsteadofTwitchFacebookLiveorYouTubelive)
|
||||
* [What can I customize?](#WhatcanIcustomize)
|
||||
* [What kind of server do I need to run Owncast?](#WhatkindofserverdoIneedtorunOwncast)
|
||||
* [When would I need a more powerful server?](#WhenwouldIneedamorepowerfulserver)
|
||||
* [What are bitrates? Why would I want more?](#WhatarebitratesWhywouldIwantmore)
|
||||
|
||||
<!-- vscode-markdown-toc-config
|
||||
numbering=true
|
||||
autoSave=true
|
||||
/vscode-markdown-toc-config -->
|
||||
<!-- /vscode-markdown-toc -->
|
||||
|
||||
|
||||
## 1. <a name='Whoisthisfor'></a>Who is this for?
|
||||
|
||||
Owncast is for people who are live streamers, or who wants to host live streams for others. It's a _"one to many"_ broadcast much like Twitch, Facebook Live, YouTube Live, etc.
|
||||
|
||||
## 2. <a name='Whoisthisnotfor'></a>Who or what is this not for?
|
||||
|
||||
Owncast is not for video conferencing or any use case where multiple people are wanting to see video of each other. It's also not a good choice if you have tight real-time requirements as HLS video has inherent delays.
|
||||
|
||||
## 2. <a name='WhywouldIusethisinsteadofTwitchFacebookLiveorYouTubelive'></a>Why would I use this instead of Twitch, Facebook Live, or YouTube live?
|
||||
|
||||
Owncast might be a good alternative if you're somebody who doesn't want to rely on the large companies or wants the ability to build something completely custom that is more in tune with the experience they want to offer. As a bonus it allows you to offer a live streaming experience that is without tracking, invasive analytics or advertising.
|
||||
|
||||
|
||||
## 3. <a name='WhatcanIcustomize'></a>What can I customize?
|
||||
You can edit the included config file to specify your site name, logo and social networking links.
|
||||
|
||||
Additionally, out of the box there is a fully functional web site with built-in chat and a video player. It's HTML + CSS + Javascript that you can edit directly. It's yours. You could also disable included web interface completely and instead embed your stream into your existing web site. Build something cool!
|
||||
|
||||
|
||||
## 4. <a name='WhatkindofserverdoIneedtorunOwncast'></a>What kind of server do I need to run Owncast?
|
||||
|
||||
You need a publicly accessible Linux or macOS server on the internet. Something like [Linode](https://www.linode.com/products/shared/) or [Digital Ocean](https://www.digitalocean.com/products/droplets/) are good options and start at $5/mo.
|
||||
|
||||
|
||||
## 5. <a name='WhenwouldIneedamorepowerfulserver'></a>When would I need a more powerful server?
|
||||
|
||||
The more bitrates you support the more processing power is required. You can easily run three bitrates on something like a $10/mo dedicated server.
|
||||
|
||||
|
||||
## 6. <a name='WhatarebitratesWhywouldIwantmore'></a>What are bitrates? Why would I want more?
|
||||
|
||||
Bitrates specify the quality of the video. The more bitrates you support the wider range of network conditions you can support. For example, a user on their broadband connection at home would want the full quality you have available. But if they're on a slow wireless connection on their phone a lower bitrate would result in less buffering and a smoother experience. This would be a two bitrate configuration and allow for offering two distinct video qualities to your users.
|
||||
|
||||
[Read more on Wikipedia](https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming) about adaptive bitrate streaming.
|
||||
|
Before Width: | Height: | Size: 26 KiB |
BIN
doc/logo.png
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 2.5 MiB |
@ -1,50 +0,0 @@
|
||||
## Quickstart
|
||||
|
||||
There are two quick ways to get up and running, depending on your preference. One is to simply download the service and run it, and the other is through Docker, if Docker is your thing.
|
||||
|
||||
|
||||
## Download and run a release
|
||||
|
||||
1. Install [`ffmpeg`](https://ffmpeg.org/download.html) if you haven't.
|
||||
1. Make a directory to run the service from, and download a release from https://github.com/gabek/owncast/releases into that directory.
|
||||
1. Unzip the release's archive for linux or macOS: `unzip owncast-linux-x.x.x.zip`.
|
||||
1. [Edit `config.yaml` as detailed below](#configure). Specifically your stream key and `ffmpeg` location.
|
||||
1. Run `./owncast` to start the service.
|
||||
|
||||
---
|
||||
|
||||
or.....
|
||||
|
||||
## Use a Docker image
|
||||
|
||||
1. Find the recent version on Docker [by visiting Dockerhub](https://hub.docker.com/repository/registry-1.docker.io/gabekangas/owncast/tags?page=1).
|
||||
1. `docker pull gabekangas/owncast:x.x.x` replacing x.x.x with the tag
|
||||
1. Run `docker run -p 8080:8080 -p 1935:1935 -it owncast` to start the service.
|
||||
|
||||
|
||||
Or if you'd prefer to download the source and use the Dockerfile to configure things
|
||||
|
||||
## Download the source and use the Dockerfile
|
||||
|
||||
1. Download the code: `git clone https://github.com/gabek/owncast`
|
||||
1. Copy `config-example.yaml` to `config.yaml`
|
||||
1. [Edit `config.yaml`](#configure) with a file editor of your choice and change the path of ffmpeg by appending `ffmpegPath: /usr/bin/ffmpeg` at the top level of the yaml.
|
||||
1. Edit your stream key to whatever you'd like it to be in the config.
|
||||
1. If you ever make any future config file changes you must rerun the `docker build` step otherwise you can just run the `docker run` step to run the service going forward.
|
||||
1. Run `docker build -t owncast .` and wait. It may take a few minutes to build depending on the speed of your server.
|
||||
1. Run `docker run -p 8080:8080 -p 1935:1935 -it owncast` to start the service.
|
||||
|
||||
---
|
||||
|
||||
### Configure
|
||||
|
||||
1. Edit `config.yaml` and change the path of ffmpeg to where your copy is.
|
||||
1. In this default configuration there will be a single video quality available, simply whatever is being sent to the server is being distributed to the viewers. The video is also going to be distributed from the server running the service in this case.
|
||||
1. Continue to edit the config file and customize with your own details, links and info. See [More Configuration](configuration.md) to find additional ways to configure video quality.
|
||||
|
||||
### Test
|
||||
1. Point your broadcasting software at your new server using `rtmp://yourserver/live` and the stream key you set above and start your stream.
|
||||
1. Access your server in your web browser by visiting `http://yourserver:8080`.
|
||||
|
||||
|
||||
### That's it!
|
@ -1,9 +0,0 @@
|
||||
# Restream.io
|
||||
|
||||
If you're a paid user of [Restream](http://restream.io) you can point it at your Ownstream instance as another place to braodcast to.
|
||||
1. Login and go to the "Add Channel" screen.
|
||||
<img src="restream1.png">
|
||||
1. Select "Custom RTMP"
|
||||
<img src="restream2.png">
|
||||
1. Add your server information in the format of `rtmp://myserver/live` for the RTMP URL and the Stream Key that matches what is in your `config.yaml` file.
|
||||
<img src="restream3.png">
|
Before Width: | Height: | Size: 170 KiB |
Before Width: | Height: | Size: 350 KiB |
Before Width: | Height: | Size: 71 KiB |