From 253ea453404deb72a8c4fe2827e4d7d754a3f5c4 Mon Sep 17 00:00:00 2001 From: HaveAGitGat <43864057+HaveAGitGat@users.noreply.github.com> Date: Mon, 25 Nov 2019 21:34:53 +0000 Subject: [PATCH] 1.01 --- ..._d5d3_iiDrakeii_FFMPEG_NVENC_Tiered_MKV.js | 167 +++++++++++++----- 1 file changed, 121 insertions(+), 46 deletions(-) diff --git a/Community/Tdarr_Plugin_d5d3_iiDrakeii_FFMPEG_NVENC_Tiered_MKV.js b/Community/Tdarr_Plugin_d5d3_iiDrakeii_FFMPEG_NVENC_Tiered_MKV.js index 28ea72b..5d8644f 100644 --- a/Community/Tdarr_Plugin_d5d3_iiDrakeii_FFMPEG_NVENC_Tiered_MKV.js +++ b/Community/Tdarr_Plugin_d5d3_iiDrakeii_FFMPEG_NVENC_Tiered_MKV.js @@ -1,37 +1,30 @@ - - - function details() { - return { id: "Tdarr_Plugin_d5d3_iiDrakeii_FFMPEG_NVENC_Tiered_MKV", Name: "Tiered FFMPEG NVENC settings depending on resolution", Type: "Video", Operation:"Transcode", Description: `[Contains built-in filter] This plugin uses different FFMPEG NVENC transcoding settings for 480p,576p,720p and 1080p. If files are not in hevc they will be transcoded. The output container is mkv. \n\n`, - Version: "1.00", + Version: "1.01", Link: "https://github.com/HaveAGitGat/Tdarr_Plugins/blob/master/Community/Tdarr_Plugin_d5d3_iiDrakeii_FFMPEG_NVENC_Tiered_MKV.js" } - } function plugin(file) { + var transcode = 0; //if this var changes to 1 the file will be transcoded - - //Must return this object - +//default values that will be returned var response = { - processFile: false, preset: '', - container: '.mp4', + container: '.mkv', handBrakeMode: false, FFmpegMode: false, reQueueAfter: false, - infoLog: '', - + infoLog: '' } +//check if the file is a video, if not the function will be stopped immediately if (file.fileMedium !== "video") { response.processFile = false response.infoLog += "☒File is not a video! \n" @@ -40,55 +33,137 @@ function plugin(file) { response.infoLog += "☑File is a video! \n" } - +//check if the file is already hevc, it will not be transcoded if true and the function will be stopped immediately if (file.ffProbeData.streams[0].codec_name == 'hevc') { response.processFile = false - response.infoLog += "☑File is already in hevc! \n" + response.infoLog += "☒File is already in hevc! \n" return response } +//file will be encoded if the resolution is 480p or 576p +//codec will be checked so it can be transcoded correctly if(file.video_resolution === "480p" || file.video_resolution === "576p" ) { + if (file.video_codec_name == 'h263') { + response.preset = `-c:v h263_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'h264') { + response.preset = `-c:v h264_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mjpeg') { + response.preset = `-c:v mjpeg_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg1') { + response.preset = `-c:v mpeg1_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg2') { + response.preset = `-c:v mpeg2_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg4') { + response.preset = `-c:v mpeg4_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vc1') { + response.preset = `-c:v vc1_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vp8') { + response.preset = `-c:v vp8_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vp9') { + response.preset = `-c:v vp9_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } + else { + response.preset = `-c:v nvenc_hevc -pix_fmt p010le -crf 32 -preset slow -c:a copy -c:s copy` + } - response.processFile = true; - response.preset = `-hwaccel cuvid ,-c:v nvenc_hevc -pix_fmt yuv420p10le -crf 32 -preset slow -c:a copy -c:s copy` - response.container = '.mkv' - response.handBrakeMode = false - response.FFmpegMode = true - response.reQueueAfter = true; - response.infoLog += `☒File is ${file.video_resolution} but is not hevc! \n` - return response + transcode = 1; } +//file will be encoded if the resolution is 720p +//codec will be checked so it can be transcoded correctly if(file.video_resolution === "720p") { - response.processFile = true; - response.preset = `-hwaccel cuvid ,-c:v nvenc_hevc -pix_fmt yuv420p10le -crf 30 -preset slow -c:a copy -c:s copy` - response.container = '.mkv' - response.handBrakeMode = false - response.FFmpegMode = true - response.reQueueAfter = true; - response.infoLog += `☒File is ${file.video_resolution} but is not hevc! \n` - return response - } + if (file.video_codec_name == 'h263') { + response.preset = `-c:v h263_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'h264') { + response.preset = `-c:v h264_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mjpeg') { + response.preset = `-c:v mjpeg_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg1') { + response.preset = `-c:v mpeg1_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg2') { + response.preset = `-c:v mpeg2_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg4') { + response.preset = `-c:v mpeg4_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vc1') { + response.preset = `-c:v vc1_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vp8') { + response.preset = `-c:v vp8_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vp9') { + response.preset = `-c:v vp9_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + else { + response.preset = `-c:v nvenc_hevc -pix_fmt p010le -crf 30 -preset slow -c:a copy -c:s copy` + } + transcode = 1; + } + +//file will be encoded if the resolution is 1080p +//codec will be checked so it can be transcoded correctly if(file.video_resolution === "1080p") { - response.processFile = true; - response.preset = `-hwaccel cuvid ,-c:v nvenc_hevc -pix_fmt yuv420p10le -crf 28 -preset slow -c:a copy -c:s copy` - response.container = '.mkv' - response.handBrakeMode = false - response.FFmpegMode = true - response.reQueueAfter = true; - response.infoLog += `☒File is ${file.video_resolution} but is not hevc! \n` - return response + if (file.video_codec_name == 'h263') { + response.preset = `-c:v h263_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'h264') { + response.preset = `-c:v h264_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mjpeg') { + response.preset = `-c:v mjpeg_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg1') { + response.preset = `-c:v mpeg1_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg2') { + response.preset = `-c:v mpeg2_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'mpeg4') { + response.preset = `-c:v mpeg4_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vc1') { + response.preset = `-c:v vc1_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vp8') { + response.preset = `-c:v vp8_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else if (file.video_codec_name == 'vp9') { + response.preset = `-c:v vp9_cuvid,-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + else { + response.preset = `-c:v nvenc_hevc -pix_fmt p010le -crf 28 -preset slow -c:a copy -c:s copy` + } + + transcode = 1; } - - response.processFile = false - response.infoLog += "☑File meets conditions! \n" - return response - +//check if the file is eligible for transcoding +//if true the neccessary response values will be changed + if (transcode == 1) { + response.processFile = true; + response.FFmpegMode = true + response.reQueueAfter = true; + response.infoLog += `☒File is ${file.video_resolution} but is not hevc!\n` + response.infoLog += `☒File will be transcoded!\n` + } + + return response } module.exports.details = details; module.exports.plugin = plugin; -