// ---------------------------------------------------------------------------
-const LAST_MIGRATION_VERSION = 220
+const LAST_MIGRATION_VERSION = 230
// ---------------------------------------------------------------------------
PASSWORD: config.get<string>('database.password')
},
REDIS: {
- HOSTNAME: config.get<string>('redis.hostname'),
- PORT: config.get<number>('redis.port'),
- AUTH: config.get<string>('redis.auth'),
- DB: config.get<number>('redis.db')
+ HOSTNAME: config.has('redis.hostname') ? config.get<string>('redis.hostname') : null,
+ PORT: config.has('redis.port') ? config.get<number>('redis.port') : null,
+ SOCKET: config.has('redis.socket') ? config.get<string>('redis.socket') : null,
+ AUTH: config.has('redis.auth') ? config.get<string>('redis.auth') : null,
+ DB: config.has('redis.db') ? config.get<number>('redis.db') : null
},
SMTP: {
HOSTNAME: config.get<string>('smtp.hostname'),
VIDEOS_DIR: buildPath(config.get<string>('storage.videos')),
THUMBNAILS_DIR: buildPath(config.get<string>('storage.thumbnails')),
PREVIEWS_DIR: buildPath(config.get<string>('storage.previews')),
+ CAPTIONS_DIR: buildPath(config.get<string>('storage.captions')),
TORRENTS_DIR: buildPath(config.get<string>('storage.torrents')),
CACHE_DIR: buildPath(config.get<string>('storage.cache'))
},
CACHE: {
PREVIEWS: {
get SIZE () { return config.get<number>('cache.previews.size') }
+ },
+ VIDEO_CAPTIONS: {
+ get SIZE () { return config.get<number>('cache.captions.size') }
}
},
INSTANCE: {
SUPPORT: { min: 3, max: 500 }, // Length
URL: { min: 3, max: 2000 } // Length
},
+ VIDEO_CAPTIONS: {
+ CAPTION_FILE: {
+ EXTNAME: [ '.vtt', '.srt' ],
+ FILE_SIZE: {
+ max: 2 * 1024 * 1024 // 2MB
+ }
+ }
+ },
VIDEOS: {
NAME: { min: 3, max: 120 }, // Length
LANGUAGE: { min: 1, max: 10 }, // Length
let VIDEO_VIEW_LIFETIME = 60000 * 60 // 1 hour
const VIDEO_TRANSCODING_FPS = {
MIN: 10,
- MAX: 30
+ AVERAGE: 30,
+ MAX: 60,
+ KEEP_ORIGIN_FPS_RESOLUTION_MIN: 720 // We keep the original FPS on high resolutions (720 minimum)
}
const VIDEO_RATE_TYPES: { [ id: string ]: VideoRateType } = {
'image/jpeg': '.jpg'
}
+const VIDEO_CAPTIONS_MIMETYPE_EXT = {
+ 'text/vtt': '.vtt',
+ 'application/x-subrip': '.srt'
+}
+
// ---------------------------------------------------------------------------
const SERVER_ACTOR_NAME = 'peertube'
THUMBNAILS: '/static/thumbnails/',
TORRENTS: '/static/torrents/',
WEBSEED: '/static/webseed/',
- AVATARS: '/static/avatars/'
+ AVATARS: '/static/avatars/',
+ VIDEO_CAPTIONS: '/static/video-captions/'
}
const STATIC_DOWNLOAD_PATHS = {
TORRENTS: '/download/torrents/',
// Sub folders of cache directory
const CACHE = {
- DIRECTORIES: {
- PREVIEWS: join(CONFIG.STORAGE.CACHE_DIR, 'previews')
+ PREVIEWS: {
+ DIRECTORY: join(CONFIG.STORAGE.CACHE_DIR, 'previews'),
+ MAX_AGE: 1000 * 3600 * 3 // 3 hours
+ },
+ VIDEO_CAPTIONS: {
+ DIRECTORY: join(CONFIG.STORAGE.CACHE_DIR, 'video-captions'),
+ MAX_AGE: 1000 * 3600 * 3 // 3 hours
}
}
const TRACKER_RATE_LIMITS = {
INTERVAL: 60000 * 5, // 5 minutes
- ANNOUNCES_PER_IP_PER_INFOHASH: 10, // maximum announces per torrent in the interval
+ ANNOUNCES_PER_IP_PER_INFOHASH: 15, // maximum announces per torrent in the interval
ANNOUNCES_PER_IP: 30 // maximum announces for all our torrents in the interval
}
VIDEO_VIEW_LIFETIME = 1000 // 1 second
JOB_ATTEMPTS['email'] = 1
+
+ CACHE.VIDEO_CAPTIONS.MAX_AGE = 3000
}
updateWebserverConfig()
export {
API_VERSION,
+ VIDEO_CAPTIONS_MIMETYPE_EXT,
AVATARS_SIZE,
ACCEPT_HEADERS,
BCRYPT_SALT_SIZE,