import * as ffmpeg from 'fluent-ffmpeg'
import { join } from 'path'
import { VideoResolution } from '../../shared/models/videos'
-import { CONFIG, VIDEO_TRANSCODING_FPS } from '../initializers'
+import { CONFIG, VIDEO_TRANSCODING_FPS, FFMPEG_NICE } from '../initializers'
import { unlinkPromise } from './core-utils'
import { processImage } from './image-utils'
import { logger } from './logger'
try {
await new Promise<string>((res, rej) => {
- ffmpeg(fromPath)
+ ffmpeg(fromPath, { 'niceness': FFMPEG_NICE.THUMBNAIL })
.on('error', rej)
.on('end', () => res(imageName))
.thumbnail(options)
function transcode (options: TranscodeOptions) {
return new Promise<void>(async (res, rej) => {
- let command = ffmpeg(options.inputPath)
+ let command = ffmpeg(options.inputPath, { 'niceness': FFMPEG_NICE.TRANSCODING })
.output(options.outputPath)
.outputOption('-threads ' + CONFIG.TRANSCODING.THREADS)
.renice(5) // we don't want to make the system unrepsonsive
DISLIKE: 'dislike'
}
+const FFMPEG_NICE: { [ id: string ]: number } = {
+ THUMBNAIL: 2, // 2 just for don't blocking servers
+ TRANSCODING: 15
+}
+
const VIDEO_CATEGORIES = {
1: 'Music',
2: 'Films',
VIDEO_RATE_TYPES,
VIDEO_MIMETYPE_EXT,
VIDEO_TRANSCODING_FPS,
+ FFMPEG_NICE,
JOB_REQUEST_TIMEOUT,
JOB_REQUEST_TTL,
USER_PASSWORD_RESET_LIFETIME,