Configuration

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 below.

Video Quality #

Owncast supports HLS 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:

videoSettings:
  streamQualities:
    - low:
      videoBitrate: 400
      scaledWidth: 600
      encoderPreset: superfast
    - medium:
      videoBitrate: 800

Please visit the Encoding 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 then files won’t get cleaned up until some point in the future, so you’ll have more remote storage use in play.

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.

Full Example #

Below, you can see all config items:

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/owncast/owncast/blob/master/doc/configuration.md#external-links
  # for full list of supported social links.  All optional.
  socialHandles:
    - platform: github
      url: https://github.com/owncast/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/owncast/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/owncast/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