-- Add migration script here PRAGMA foreign_keys = ON; CREATE TABLE global ( id INTEGER PRIMARY KEY, secret TEXT NOT NULL, logs TEXT NOT NULL DEFAULT "/var/log/ffplayout", playlists TEXT NOT NULL DEFAULT "/var/lib/ffplayout/playlists", public TEXT NOT NULL DEFAULT "/usr/share/ffplayout/public", storage TEXT NOT NULL DEFAULT "/var/lib/ffplayout/tv-media", shared INTEGER NOT NULL DEFAULT 0, mail_smtp TEXT NOT NULL DEFAULT "mail.example.org", mail_user TEXT NOT NULL DEFAULT "ffplayout@example.org", mail_password TEXT NOT NULL DEFAULT "", mail_starttls INTEGER NULL DEFAULT 0, UNIQUE (secret) ); CREATE TABLE roles ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, UNIQUE (name) ); CREATE TABLE channels ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, preview_url TEXT NOT NULL, extra_extensions TEXT NOT NULL DEFAULT 'jpg,jpeg,png', active INTEGER NOT NULL DEFAULT 0, public TEXT NOT NULL DEFAULT "/usr/share/ffplayout/public", playlists TEXT NOT NULL DEFAULT "/var/lib/ffplayout/playlists", storage TEXT NOT NULL DEFAULT "/var/lib/ffplayout/tv-media", last_date TEXT, time_shift REAL NOT NULL DEFAULT 0 ); CREATE TABLE presets ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, text TEXT NOT NULL, x TEXT NOT NULL, y TEXT NOT NULL, fontsize TEXT NOT NULL, line_spacing TEXT NOT NULL, fontcolor TEXT NOT NULL, box TEXT NOT NULL, boxcolor TEXT NOT NULL, boxborderw TEXT NOT NULL, alpha TEXT NOT NULL, channel_id INTEGER NOT NULL DEFAULT 1, FOREIGN KEY (channel_id) REFERENCES channels (id) ON UPDATE CASCADE ON DELETE CASCADE ); CREATE TABLE user ( id INTEGER PRIMARY KEY, mail TEXT NOT NULL, username TEXT NOT NULL, password TEXT NOT NULL, role_id INTEGER NOT NULL DEFAULT 3, FOREIGN KEY (role_id) REFERENCES roles (id) ON UPDATE SET NULL ON DELETE SET DEFAULT, UNIQUE (username) ); CREATE TABLE user_channels ( id INTEGER PRIMARY KEY, channel_id INTEGER NOT NULL, user_id INTEGER NOT NULL, FOREIGN KEY (channel_id) REFERENCES channels (id) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (user_id) REFERENCES user (id) ON UPDATE CASCADE ON DELETE CASCADE ); CREATE UNIQUE INDEX IF NOT EXISTS idx_user_channels_unique ON user_channels (channel_id, user_id); CREATE TABLE configurations ( id INTEGER PRIMARY KEY, channel_id INTEGER NOT NULL DEFAULT 1, general_stop_threshold REAL NOT NULL DEFAULT 11.0, mail_subject TEXT NOT NULL DEFAULT "Playout Error", mail_recipient TEXT NOT NULL DEFAULT "", mail_level TEXT NOT NULL DEFAULT "ERROR", mail_interval INTEGER NOT NULL DEFAULT 120, logging_ffmpeg_level TEXT NOT NULL DEFAULT "ERROR", logging_ingest_level TEXT NOT NULL DEFAULT "ERROR", logging_detect_silence INTEGER NOT NULL DEFAULT 0, logging_ignore TEXT NOT NULL DEFAULT "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_mode TEXT NOT NULL DEFAULT "playlist", processing_audio_only INTEGER NOT NULL DEFAULT 0, processing_copy_audio INTEGER NOT NULL DEFAULT 0, processing_copy_video INTEGER NOT NULL DEFAULT 0, processing_width INTEGER NOT NULL DEFAULT 1280, processing_height INTEGER NOT NULL DEFAULT 720, processing_aspect REAL NOT NULL DEFAULT 1.778, processing_fps REAL NOT NULL DEFAULT 25.0, processing_add_logo INTEGER NOT NULL DEFAULT 1, processing_logo TEXT NOT NULL DEFAULT "00-assets/logo.png", processing_logo_scale TEXT NOT NULL DEFAULT "", processing_logo_opacity REAL NOT NULL DEFAULT 0.7, processing_logo_position TEXT NOT NULL DEFAULT "W-w-12:12", processing_audio_tracks INTEGER NOT NULL DEFAULT 1, processing_audio_track_index INTEGER NOT NULL DEFAULT -1, processing_audio_channels INTEGER NOT NULL DEFAULT 2, processing_volume REAL NOT NULL DEFAULT 1.0, processing_filter TEXT NOT NULL DEFAULT "", processing_vtt_enable INTEGER NOT NULL DEFAULT 0, processing_vtt_dummy TEXT NULL DEFAULT "00-assets/dummy.vtt", ingest_enable INTEGER NOT NULL DEFAULT 0, ingest_param TEXT NOT NULL DEFAULT "-f live_flv -listen 1 -i rtmp://127.0.0.1:1936/live/stream", ingest_filter TEXT NOT NULL DEFAULT "", playlist_day_start TEXT NOT NULL DEFAULT "05:59:25", playlist_length TEXT NOT NULL DEFAULT "24:00:00", playlist_infinit INTEGER NOT NULL DEFAULT 0, storage_filler TEXT NOT NULL DEFAULT "filler/filler.mp4", storage_extensions TEXT NOT NULL DEFAULT "mp4;mkv;webm", storage_shuffle INTEGER NOT NULL DEFAULT 1, text_add INTEGER NOT NULL DEFAULT 1, text_from_filename INTEGER NOT NULL DEFAULT 0, text_font TEXT NOT NULL DEFAULT "00-assets/DejaVuSans.ttf", text_style TEXT NOT NULL DEFAULT "x=(w-tw)/2:y=(h-line_h)*0.9:fontsize=24:fontcolor=#ffffff:box=1:boxcolor=#000000:boxborderw=4", text_regex TEXT NOT NULL DEFAULT "^.+[/\\](.*)(.mp4|.mkv|.webm)$", task_enable INTEGER NOT NULL DEFAULT 0, task_path TEXT NOT NULL DEFAULT "", output_mode TEXT NOT NULL DEFAULT "hls", output_param TEXT NOT NULL DEFAULT "-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 -muxpreload 0 -muxdelay 0 -f hls -hls_time 6 -hls_list_size 600 -hls_flags append_list+delete_segments+omit_endlist -hls_segment_filename live/stream-%d.ts live/stream.m3u8", FOREIGN KEY (channel_id) REFERENCES channels (id) ON UPDATE CASCADE ON DELETE CASCADE ); CREATE TABLE advanced_configurations ( id INTEGER PRIMARY KEY, channel_id INTEGER NOT NULL DEFAULT 1, decoder_input_param TEXT, decoder_output_param TEXT, encoder_input_param TEXT, ingest_input_param TEXT, filter_deinterlace TEXT, filter_pad_scale_w TEXT, filter_pad_scale_h TEXT, filter_pad_video TEXT, filter_fps TEXT, filter_scale TEXT, filter_set_dar TEXT, filter_fade_in TEXT, filter_fade_out TEXT, filter_overlay_logo_scale TEXT, filter_overlay_logo_fade_in TEXT, filter_overlay_logo_fade_out TEXT, filter_overlay_logo TEXT, filter_tpad TEXT, filter_drawtext_from_file TEXT, filter_drawtext_from_zmq TEXT, filter_aevalsrc TEXT, filter_afade_in TEXT, filter_afade_out TEXT, filter_apad TEXT, filter_volume TEXT, filter_split TEXT, FOREIGN KEY (channel_id) REFERENCES channels (id) ON UPDATE CASCADE ON DELETE CASCADE ); ------------------------------------------------------------------------------- -- set defaults INSERT INTO roles (name) VALUES ('global_admin'), ('channel_admin'), ('user'), ('guest'); INSERT INTO channels (name, preview_url, extra_extensions, active) VALUES ( 'Channel 1', 'http://127.0.0.1:8787/1/live/stream.m3u8', 'jpg,jpeg,png', 0 ); INSERT INTO presets ( name, text, x, y, fontsize, line_spacing, fontcolor, box, boxcolor, boxborderw, alpha, channel_id ) VALUES ( 'Default', 'Welcome to ffplayout messenger!', '(w-text_w)/2', '(h-text_h)/2', '24', '4', '#ffffff@0xff', '0', '#000000@0x80', '4', '1.0', '1' ), ( 'Empty Text', '', '0', '0', '24', '4', '#000000', '0', '#000000', '0', '0', '1' ), ( 'Bottom Text fade in', 'The upcoming event will be delayed by a few minutes.', '(w-text_w)/2', '(h-line_h)*0.9', '24', '4', '#ffffff', '1', '#000000@0x80', '4', 'ifnot(ld(1),st(1,t));if(lt(t,ld(1)+1),0,if(lt(t,ld(1)+2),(t-(ld(1)+1))/1,if(lt(t,ld(1)+8),1,if(lt(t,ld(1)+9),(1-(t-(ld(1)+8)))/1,0))))', '1' ), ( 'Scrolling Text', 'We have a very important announcement to make.', 'ifnot(ld(1),st(1,t));if(lt(t,ld(1)+1),w+4,w-w/12*mod(t-ld(1),12*(w+tw)/w))', '(h-line_h)*0.9', '24', '4', '#ffffff', '1', '#000000@0x80', '4', '1.0', '1' ); INSERT INTO configurations DEFAULT VALUES; INSERT INTO advanced_configurations DEFAULT VALUES;