ffplayout/migrations/00001_create_tables.sql

268 lines
9.0 KiB
SQL

-- 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;