// ---------------------------------------------------------------------------
-const LAST_MIGRATION_VERSION = 685
+const LAST_MIGRATION_VERSION = 705
// ---------------------------------------------------------------------------
'activitypub-refresher': 1,
'video-redundancy': 1,
'video-live-ending': 1,
- 'video-edition': 1,
+ 'video-studio-edition': 1,
+ 'manage-video-torrent': 1,
'move-to-object-storage': 3
}
// Excluded keys are jobs that can be configured by admins
'activitypub-refresher': 1,
'video-redundancy': 1,
'video-live-ending': 10,
- 'video-edition': 1,
+ 'video-studio-edition': 1,
+ 'manage-video-torrent': 1,
'move-to-object-storage': 1
}
const JOB_TTL: { [id in JobType]: number } = {
'activitypub-cleaner': 1000 * 3600, // 1 hour
'video-file-import': 1000 * 3600, // 1 hour
'video-transcoding': 1000 * 3600 * 48, // 2 days, transcoding could be long
- 'video-edition': 1000 * 3600 * 10, // 10 hours
+ 'video-studio-edition': 1000 * 3600 * 10, // 10 hours
'video-import': 1000 * 3600 * 2, // 2 hours
'email': 60000 * 10, // 10 minutes
'actor-keys': 60000 * 20, // 20 minutes
'activitypub-refresher': 60000 * 10, // 10 minutes
'video-redundancy': 1000 * 3600 * 3, // 3 hours
'video-live-ending': 1000 * 60 * 10, // 10 minutes
+ 'manage-video-torrent': 1000 * 3600 * 3, // 3 hours
'move-to-object-storage': 1000 * 60 * 60 * 3 // 3 hours
}
const REPEAT_JOBS: { [ id in JobType ]?: EveryRepeatOptions | CronRepeatOptions } = {
REMOVE_OLD_JOBS: 60000 * 60, // 1 hour
UPDATE_VIDEOS: 60000, // 1 minute
YOUTUBE_DL_UPDATE: 60000 * 60 * 24, // 1 day
+ GEO_IP_UPDATE: 60000 * 60 * 24, // 1 day
VIDEO_VIEWS_BUFFER_UPDATE: CONFIG.VIEWS.VIDEOS.LOCAL_BUFFER_UPDATE_INTERVAL,
CHECK_PLUGINS: CONFIG.PLUGINS.INDEX.CHECK_LATEST_VERSIONS_INTERVAL,
CHECK_PEERTUBE_VERSION: 60000 * 60 * 24, // 1 day
COMMONS: {
URL: { min: 5, max: 2000 } // Length
},
- VIDEO_EDITOR: {
+ VIDEO_STUDIO: {
TASKS: { min: 1, max: 10 }, // Number of tasks
CUT_TIME: { min: 0 } // Value
}
const VIEW_LIFETIME = {
VIEW: CONFIG.VIEWS.VIDEOS.IP_VIEW_EXPIRATION,
- VIEWER: 60000 * 5 // 5 minutes
+ VIEWER_COUNTER: 60000 * 1, // 1 minute
+ VIEWER_STATS: 60000 * 60 // 1 hour
}
+const MAX_LOCAL_VIEWER_WATCH_SECTIONS = 10
+
let CONTACT_FORM_LIFETIME = 60000 * 60 // 1 hour
const VIDEO_TRANSCODING_FPS: VideoTranscodingFPS = {
MIMETYPE_EXT: {
'audio/mpeg': '.mp3',
'audio/mp3': '.mp3',
+
'application/ogg': '.ogg',
'audio/ogg': '.ogg',
+
'audio/x-ms-wma': '.wma',
'audio/wav': '.wav',
'audio/x-wav': '.wav',
+
'audio/x-flac': '.flac',
'audio/flac': '.flac',
+
+ 'audio/vnd.dlna.adts': '.aac',
'audio/aac': '.aac',
+
'audio/m4a': '.m4a',
'audio/mp4': '.m4a',
'audio/x-m4a': '.m4a',
+
+ 'audio/vnd.dolby.dd-raw': '.ac3',
'audio/ac3': '.ac3'
},
EXT_MIMETYPE: null as { [ id: string ]: string }
const VIDEO_LIVE = {
EXTENSION: '.ts',
CLEANUP_DELAY: 1000 * 60 * 5, // 5 minutes
- SEGMENT_TIME_SECONDS: 4, // 4 seconds
+ SEGMENT_TIME_SECONDS: {
+ DEFAULT_LATENCY: 4, // 4 seconds
+ SMALL_LATENCY: 2 // 2 seconds
+ },
SEGMENTS_LIST_SIZE: 15, // 15 maximum segments in live playlist
REPLAY_DIRECTORY: 'replay',
EDGE_LIVE_DELAY_SEGMENTS_NOTIFICATION: 4,
// ---------------------------------------------------------------------------
+const STATS_TIMESERIE = {
+ MAX_DAYS: 30
+}
+
+// ---------------------------------------------------------------------------
+
// Special constants for a test instance
if (isTestInstance() === true) {
PRIVATE_RSA_KEY_SIZE = 1024
REDUNDANCY.VIDEOS.RANDOMIZED_FACTOR = 1
- VIEW_LIFETIME.VIEWER = 1000 * 5 // 5 second
+ VIEW_LIFETIME.VIEWER_COUNTER = 1000 * 5 // 5 second
+ VIEW_LIFETIME.VIEWER_STATS = 1000 * 5 // 5 second
CONTACT_FORM_LIFETIME = 1000 // 1 second
JOB_ATTEMPTS['email'] = 1
PLUGIN_EXTERNAL_AUTH_TOKEN_LIFETIME = 5000
VIDEO_LIVE.CLEANUP_DELAY = 5000
- VIDEO_LIVE.SEGMENT_TIME_SECONDS = 2
+ VIDEO_LIVE.SEGMENT_TIME_SECONDS.DEFAULT_LATENCY = 2
+ VIDEO_LIVE.SEGMENT_TIME_SECONDS.SMALL_LATENCY = 1
VIDEO_LIVE.EDGE_LIVE_DELAY_SEGMENTS_NOTIFICATION = 1
}
LAST_MIGRATION_VERSION,
OAUTH_LIFETIME,
CUSTOM_HTML_TAG_COMMENTS,
+ STATS_TIMESERIE,
BROADCAST_CONCURRENCY,
AUDIT_LOG_FILENAME,
PAGINATION,
ABUSE_STATES,
LRU_CACHE,
REQUEST_TIMEOUTS,
+ MAX_LOCAL_VIEWER_WATCH_SECTIONS,
USER_PASSWORD_RESET_LIFETIME,
USER_PASSWORD_CREATE_LIFETIME,
MEMOIZE_TTL,
// The standard video format used by many Sony and Panasonic HD camcorders.
// It is also used for storing high definition video on Blu-ray discs.
'video/mp2t': '.mts',
+ 'video/vnd.dlna.mpeg-tts': '.mts',
+
'video/m2ts': '.m2ts',
// Old formats reliant on MPEG-1/MPEG-2
WEBSERVER.HOSTNAME = CONFIG.WEBSERVER.HOSTNAME
WEBSERVER.PORT = CONFIG.WEBSERVER.PORT
- WEBSERVER.RTMP_URL = 'rtmp://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.LIVE.RTMP.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH
- WEBSERVER.RTMPS_URL = 'rtmps://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.LIVE.RTMPS.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH
+ WEBSERVER.RTMP_URL = 'rtmp://' + CONFIG.LIVE.RTMP.HOSTNAME + ':' + CONFIG.LIVE.RTMP.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH
+ WEBSERVER.RTMPS_URL = 'rtmps://' + CONFIG.LIVE.RTMPS.HOSTNAME + ':' + CONFIG.LIVE.RTMPS.PORT + '/' + VIDEO_LIVE.RTMP.BASE_PATH
}
function updateWebserverConfig () {