X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Finitializers%2Fconstants.ts;h=a78a66d78409a01326251bdecea1be8f93cc4af1;hb=a4a8cd39712c59119ad0be5cd584b158f06c5852;hp=5c6d060775081b51e8ab217008938aefc5936503;hpb=123f61933611f326ea5a5e8c2ea253ee8720e4f0;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index 5c6d06077..a78a66d78 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -24,7 +24,7 @@ import { CONFIG, registerConfigChangedHandler } from './config' // --------------------------------------------------------------------------- -const LAST_MIGRATION_VERSION = 555 +const LAST_MIGRATION_VERSION = 570 // --------------------------------------------------------------------------- @@ -85,7 +85,7 @@ const SORTABLE_COLUMNS = { USER_NOTIFICATIONS: [ 'createdAt', 'read' ], - VIDEO_PLAYLISTS: [ 'displayName', 'createdAt', 'updatedAt' ], + VIDEO_PLAYLISTS: [ 'name', 'displayName', 'createdAt', 'updatedAt' ], PLUGINS: [ 'name', 'createdAt', 'updatedAt' ], @@ -179,6 +179,12 @@ const REPEAT_JOBS: { [ id: string ]: EveryRepeatOptions | CronRepeatOptions } = cron: randomInt(1, 20) + ' * * * *' // Between 1-20 minutes past the hour } } +const JOB_PRIORITY = { + TRANSCODING: { + OPTIMIZER: 10, + NEW_RESOLUTION: 100 + } +} const BROADCAST_CONCURRENCY = 10 // How many requests in parallel we do in activitypub-http-broadcast job const CRAWL_REQUEST_CONCURRENCY = 1 // How many requests in parallel to fetch remote data (likes, shares...) @@ -194,7 +200,8 @@ const SCHEDULER_INTERVALS_MS = { checkPlugins: CONFIG.PLUGINS.INDEX.CHECK_LATEST_VERSIONS_INTERVAL, autoFollowIndexInstances: 60000 * 60 * 24, // 1 day removeOldViews: 60000 * 60 * 24, // 1 day - removeOldHistory: 60000 * 60 * 24 // 1 day + removeOldHistory: 60000 * 60 * 24, // 1 day + updateInboxStats: 1000 * 60// 1 minute } // --------------------------------------------------------------------------- @@ -257,7 +264,7 @@ const CONSTRAINTS_FIELDS = { DESCRIPTION: { min: 3, max: 10000 }, // Length SUPPORT: { min: 3, max: 1000 }, // Length IMAGE: { - EXTNAME: [ '.jpg', '.jpeg' ], + EXTNAME: [ '.png', '.jpg', '.jpeg', '.webp' ], FILE_SIZE: { max: 2 * 1024 * 1024 // 2MB } @@ -267,8 +274,6 @@ const CONSTRAINTS_FIELDS = { DURATION: { min: 0 }, // Number TAGS: { min: 0, max: 5 }, // Number of total tags TAG: { min: 2, max: 30 }, // Length - THUMBNAIL: { min: 2, max: 30 }, - THUMBNAIL_DATA: { min: 0, max: 20000 }, // Bytes VIEWS: { min: 0 }, LIKES: { min: 0 }, DISLIKES: { min: 0 }, @@ -291,7 +296,7 @@ const CONSTRAINTS_FIELDS = { PRIVATE_KEY: { min: 10, max: 5000 }, // Length URL: { min: 3, max: 2000 }, // Length AVATAR: { - EXTNAME: [ '.png', '.jpeg', '.jpg', '.gif' ], + EXTNAME: [ '.png', '.jpeg', '.jpg', '.gif', '.webp' ], FILE_SIZE: { max: 2 * 1024 * 1024 // 2MB } @@ -336,6 +341,17 @@ const VIDEO_TRANSCODING_FPS: VideoTranscodingFPS = { KEEP_ORIGIN_FPS_RESOLUTION_MIN: 720 // We keep the original FPS on high resolutions (720 minimum) } +const VIDEO_TRANSCODING_ENCODERS = { + VIDEO: [ 'libx264' ], + + // Try the first one, if not available try the second one etc + AUDIO: [ + // we favor VBR, if a good AAC encoder is available + 'libfdk_aac', + 'aac' + ] +} + const DEFAULT_AUDIO_RESOLUTION = VideoResolution.H_480P const VIDEO_RATE_TYPES: { [ id: string ]: VideoRateType } = { @@ -344,8 +360,11 @@ const VIDEO_RATE_TYPES: { [ id: string ]: VideoRateType } = { } const FFMPEG_NICE: { [ id: string ]: number } = { - THUMBNAIL: 2, // 2 just for don't blocking servers - TRANSCODING: 15 + // parent process defaults to niceness = 0 + // reminder: lower = higher priority, max value is 19, lowest is -20 + LIVE: 5, // prioritize over VOD and THUMBNAIL + THUMBNAIL: 10, + VOD: 15 } const VIDEO_CATEGORIES = { @@ -623,6 +642,7 @@ const VIDEO_LIVE = { CLEANUP_DELAY: 1000 * 60 * 5, // 5 minutes SEGMENT_TIME_SECONDS: 4, // 4 seconds SEGMENTS_LIST_SIZE: 15, // 15 maximum segments in live playlist + REPLAY_DIRECTORY: 'replay', EDGE_LIVE_DELAY_SEGMENTS_NOTIFICATION: 4, RTMP: { CHUNK_SIZE: 60000, @@ -728,6 +748,7 @@ if (isTestInstance() === true) { ACTIVITY_PUB.VIDEO_PLAYLIST_REFRESH_INTERVAL = 10 * 1000 // 10 seconds CONSTRAINTS_FIELDS.ACTORS.AVATAR.FILE_SIZE.max = 100 * 1024 // 100KB + CONSTRAINTS_FIELDS.VIDEOS.IMAGE.FILE_SIZE.max = 400 * 1024 // 400KB SCHEDULER_INTERVALS_MS.actorFollowScores = 1000 SCHEDULER_INTERVALS_MS.removeOldJobs = 10000 @@ -735,6 +756,7 @@ if (isTestInstance() === true) { SCHEDULER_INTERVALS_MS.removeOldViews = 5000 SCHEDULER_INTERVALS_MS.updateVideos = 5000 SCHEDULER_INTERVALS_MS.autoFollowIndexInstances = 5000 + SCHEDULER_INTERVALS_MS.updateInboxStats = 5000 REPEAT_JOBS['videos-views'] = { every: 5000 } REDUNDANCY.VIDEOS.RANDOMIZED_FACTOR = 1 @@ -804,6 +826,7 @@ export { ACTOR_FOLLOW_SCORE, PREVIEWS_SIZE, REMOTE_SCHEME, + VIDEO_TRANSCODING_ENCODERS, FOLLOW_STATES, DEFAULT_USER_THEME_NAME, SERVER_ACTOR_NAME, @@ -833,6 +856,7 @@ export { VIDEO_STATES, QUEUE_CONCURRENCY, VIDEO_RATE_TYPES, + JOB_PRIORITY, VIDEO_TRANSCODING_FPS, FFMPEG_NICE, ABUSE_STATES,