ffplayout/ffplayout.conf
2019-03-18 21:21:45 +01:00

140 lines
5.1 KiB
Plaintext

# This file is part of ffplayout.
#
# ffplayout is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# ffplayout is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with ffplayout. If not, see <http://www.gnu.org/licenses/>.
# ------------------------------------------------------------------------------
# sometimes it can happen, that a file is corrupt but still playable,
# this can produce an streaming error over all following files
# the only way in this case is, to stop ffplayout and start it again
# here we only say it can stop, the starting process is in your hand
# best way is a systemd serivce on linux
# stop_threshold: stop ffplayout, if it is async in time above this value
# in copy mode this is tricky
[GENERAL]
stop_on_error = True
stop_threshold = 7
# send error messages to email address, like:
# missing playlist
# unvalid json format
# missing clip path
# leave recipient blank, if you don't need this
[MAIL]
subject = "Playout Error"
smpt_server = mail.example.org
smpt_port = 587
sender_addr = ffplayout@example.org
sender_pass = 12345
recipient =
# Logging to file
# path to /var/log/ only if you run this program as deamon
# log_level can be: INFO, DEBUG, WARNING
[LOGGING]
log_file = /var/log/ffplayout/ffplayout.log
log_level = INFO
# output settings for the pre-compression
# all clips get prepared in that way,
# so the input for the final compression is unique
# it produce a uncompressed avi stream
# logo is only used if the path exist
# with logo_filter = overlay=W-w-2:0 you can modify the logo position
# live_protocols is for checking input, is input a live source ffplayout handles it a bit different
[PRE_COMPRESS]
width = 1024
height = 576
fps = 25
v_bitrate = 50000
logo = logo.png
logo_filter = overlay=W-w-2:0
live_protocols = ["http", "https", "ftp", "rtmp", "rtmpe", "rtmps", "rtp", "rtsp", "srt", "tcp", "udp"]
copy_mode = False
ffmpeg_copy_settings = ["-c", "copy", "-bsf:v", "h264_mp4toannexb", "-threads", "2", "-f", "mpegts", "-"]
# playlist settings
# put only the root path here, for example: "/playlists"
# subfolders are readed by the script
# subfolders needs this structur:
# "/playlists/2018/01" (/playlists/year/month)
# strings in playlist must have ampersan (&) as: &amp;
# day_start means at witch hour starts the day, as integer
# filler_path are for the GUI only at the moment
# filler_clip get handle different, when a new length needs to calculate
# blackclip is for stream copy mode
# time_shift adds or subtract seconds to the clip start,
# this is usefull for example for hls, because it have a big delay
# the value will be added to the clip begin
# put 0 if you don't need it
# map_extension is only for special purpose,
# when your playlist have a different extension, then the originial clip
# example: map_extension = [".mp4", ".mkv"]
# life blank for no change
[PLAYLIST]
playlist_path = /playlists
clips_root = /media
filler_path = /media/filler/filler-clips
filler_clip = /media/filler/seperator.clock.mp4
blackclip = /opt/dummy20.mkv
day_start = 6
time_shift = 35
map_extension =
# buffer settings
# this is a system processs witch run between pre-compression
# and final compression, this makes the magic to playout multiple files
# without interrupt the stream
# buffer_length: length in seconds of the buffer
# this is the time what the playout have, to change from one clip to the next
# be liberal with this value but dont exaggerate
# # buffer size gets calculate with: (v_bitrate * 0.125 + 281.25) * buffer_length
# by rawvideo calculation would be:
# (width x height * 3 / 2 * fps * buffer_length / 1024) + ((a_sample * 16 * 2 * buffer_length) / 8 / 1024)
# Size is in KB
# buffer_tolerance: ffmpeg holds material to in buffer, for this is the tolerance value
# a 1024x576 stream have around 2.5 seconds extra in buffer
# buffer_cli: the prefert buffer tool, needs to be installed on your system
# buffer_cmd: need to end with the buffer size command, full command would look:
# /usr/bin/pv -q -B; or: /usr/bin/mbuffer -q -c -m; or pipebuffer -s
[BUFFER]
buffer_length = 5
buffer_tolerance = 2.5
buffer_cli = /usr/bin/mbuffer
buffer_cmd = ["-q", "-c", "-m"]
# the final playout post compression
# set the settings to your needs
# preview works only on a desktop system with ffplay!! Set it to True, if you need it
[OUT]
preview = False
service_name = Live Stream
service_provider = example.org
post_comp_video = ["-c:v", "libx264", "-crf", "23", "-g", "50", "-maxrate", "1300k", "-bufsize", "2600k", "-preset", "medium", "-profile:v", "Main", "-level", "3.1", "-refs", "3"]
post_comp_audio = ["-c:a", "libfdk_aac", "-ar", "44100", "-b:a", "128k"]
post_comp_extra = ["-threads", "2", "-flags", "+global_header", "-f", "flv"]
post_comp_copy = ["-bsf:a", "aac_adtstoasc"]
out_addr = rtmp://127.0.0.1/live/stream