[general] help_text = """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 when \ it stops, the starting process is in your hand. Best way is a systemd service \ on linux. 'stop_threshold' stop ffplayout, if it is async in time above this \ value. A number below 3 can cause unexpected errors.""" stop_threshold = 11 stat_file = ".ffp_status" [rpc_server] help_text = """Run a JSON RPC server, for getting infos about current playing and for some \ control functions.""" enable = true address = "127.0.0.1:7070" authorization = "av2Kx8g67lF9qj5wEH3ym1bI4cCs" [mail] help_text = """Send error messages to email address, like missing playlist; invalid \ json format; missing clip path. Leave recipient blank, if you don't need this. 'mail_level' can be INFO, WARNING or ERROR. 'interval' means seconds until a new mail will be sended.""" subject = "Playout Error" smtp_server = "mail.example.org" starttls = true sender_addr = "ffplayout@example.org" sender_pass = "abc123" recipient = "" mail_level = "ERROR" interval = 30 [logging] help_text = """If 'log_to_file' is true, log to file, when is false log to console. 'backup_count' says how long log files will be saved in days. 'local_time' to false will set log timestamps to UTC. Path to /var/log/ only \ if you run this program as daemon. 'level' can be DEBUG, INFO, WARNING, ERROR. 'ffmpeg_level/ingest_level' can be INFO, WARNING, ERROR. 'detect_silence' logs an error message if the audio line is silent for 15 \ seconds during the validation process. 'ignore_lines' makes logging to ignore strings that contains matched lines, \ in frontend is a semicolon separated list.""" log_to_file = true backup_count = 7 local_time = true timestamp = true path = "/var/log/ffplayout/" level = "DEBUG" ffmpeg_level = "ERROR" ingest_level = "WARNING" detect_silence = false ignore_lines = [ "P sub_mb_type 4 out of range at", "error while decoding MB", "negative number of zero coeffs at", "out of range intra chroma pred mode", "non-existing SPS 0 referenced in buffering period", ] [processing] help_text = """Default processing for all clips, to have them unique. Mode can be playlist \ or folder. 'aspect' must be a float number.'logo' is only used if the path exist. 'logo_scale' scale the logo to target size, leave it blank when no scaling \ is needed, format is 'width:height', for example '100:-1' for proportional \ scaling. With 'logo_opacity' logo can become transparent. With 'audio_tracks' it is possible to configure how many audio tracks should \ be processed. 'audio_channels' can be use, if audio has more channels then only stereo. With 'logo_position' in format 'x:y' you set the logo position. With 'custom_filter' it is possible, to apply further filters. The filter \ outputs should end with [c_v_out] for video filter, and [c_a_out] for audio filter.""" mode = "playlist" audio_only = false copy_audio = false copy_video = false width = 1024 height = 576 aspect = 1.778 fps = 25 add_logo = true logo = "/usr/share/ffplayout/logo.png" logo_scale = "" logo_opacity = 0.7 logo_position = "W-w-12:12" audio_tracks = 1 audio_track_index = -1 audio_channels = 2 volume = 1 custom_filter = "" [ingest] help_text = """Run a server for a ingest stream. This stream will override the normal streaming \ until is done. There is only a very simple authentication mechanism, which check if the \ stream name is correct. 'custom_filter' can be used in the same way then the one in the process section.""" enable = false input_param = "-f live_flv -listen 1 -i rtmp://127.0.0.1:1936/live/stream" custom_filter = "" [playlist] help_text = """'path' can be a path to a single file, or a directory. For directory put \ only the root folder, for example '/playlists', subdirectories are read by the \ program. Subdirectories needs this structure '/playlists/2018/01'. 'day_start' means at which time the playlist should start, leave day_start \ blank when playlist should always start at the begin. 'length' represent the \ target length from playlist, when is blank real length will not consider. 'infinit: true' works with single playlist file and loops it infinitely. """ path = "/var/lib/ffplayout/playlists" day_start = "05:59:25" length = "24:00:00" infinit = false [storage] help_text = """'filler' is for playing instead of a missing file or fill the end to reach 24 \ hours, can be a file or folder, it will loop when is necessary. 'extensions' search only files with this extension. Set 'shuffle' to 'true' \ to pick files randomly.""" path = "/var/lib/ffplayout/tv-media" filler = "/var/lib/ffplayout/tv-media/filler/filler.mp4" extensions = ["mp4", "mkv", "webm"] shuffle = true [text] help_text = """Overlay text in combination with libzmq for remote text manipulation. \ On windows fontfile path need to be like this 'C\\:/WINDOWS/fonts/DejaVuSans.ttf'. 'text_from_filename' activate the extraction from text of a filename. With 'style' \ you can define the drawtext parameters like position, color, etc. Post Text over \ API will override this. With 'regex' you can format file names, to get a title from it.""" add_text = true text_from_filename = false fontfile = "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf" style = "x=(w-tw)/2:y=(h-line_h)*0.9:fontsize=24:fontcolor=#ffffff:box=1:boxcolor=#000000:boxborderw=4" regex = "^.+[/\\](.*)(.mp4|.mkv|.webm)$" [task] help_text = """Run an external program with a given media object. The media object is in json format \ and contains all the information about the current clip. The external program can be a script \ or a binary, but should only run for a short time.""" enable = false path = "" [out] help_text = """The final playout compression. Set the settings to your needs. 'mode' \ has the options 'desktop', 'hls', 'null', 'stream'. Use 'stream' and adjust \ 'output_param:' settings when you want to stream to a rtmp/rtsp/srt/... server. In production don't serve hls playlist with ffpapi, use nginx or another web server!""" mode = "hls" output_param = """\ -c:v libx264 -crf 23 -x264-params keyint=50:min-keyint=25:scenecut=-1 -maxrate 1300k -bufsize 2600k -preset faster -tune zerolatency -profile:v Main -level 3.1 -c:a aac -ar 44100 -b:a 128k -flags +cgop -f hls -hls_time 6 -hls_list_size 600 -hls_flags append_list+delete_segments+omit_endlist -hls_segment_filename /usr/share/ffplayout/public/live/stream-%d.ts /usr/share/ffplayout/public/live/stream.m3u8"""