+ if (CONFIG.TRANSCODING.THREADS > 0) {
+ // if we don't set any threads ffmpeg will chose automatically
+ command = command.outputOption('-threads ' + CONFIG.TRANSCODING.THREADS)
+ }
+
+ if (options.resolution !== undefined) {
+ // '?x720' or '720x?' for example
+ const size = options.isPortraitMode === true ? `${options.resolution}x?` : `?x${options.resolution}`
+ command = command.size(size)
+ }
+
+ if (fps) {
+ // Hard FPS limits
+ if (fps > VIDEO_TRANSCODING_FPS.MAX) fps = VIDEO_TRANSCODING_FPS.MAX
+ else if (fps < VIDEO_TRANSCODING_FPS.MIN) fps = VIDEO_TRANSCODING_FPS.MIN
+
+ command = command.withFPS(fps)
+ }
+
+ if (options.hlsPlaylist) {
+ const videoPath = `${dirname(options.outputPath)}/${options.hlsPlaylist.videoFilename}`
+
+ command = command.outputOption('-hls_time 4')
+ .outputOption('-hls_list_size 0')
+ .outputOption('-hls_playlist_type vod')
+ .outputOption('-hls_segment_filename ' + videoPath)
+ .outputOption('-hls_segment_type fmp4')
+ .outputOption('-f hls')
+ .outputOption('-hls_flags single_file')
+ }