From d60e0c17addec7c5b0a5c66ce31ef5089fb21aa3 Mon Sep 17 00:00:00 2001 From: HaveAGitGat <43864057+HaveAGitGat@users.noreply.github.com> Date: Tue, 3 Dec 2019 21:12:39 +0000 Subject: [PATCH] Add new action --- methods/actions.js | 4 +- methods/filters.js | 18 ++--- methods/library.js | 8 +- .../transcodeStandardiseAudioCodecs.js | 76 +++++++++++++++++++ 4 files changed, 85 insertions(+), 21 deletions(-) create mode 100644 methods/library/actions/transcodeStandardiseAudioCodecs.js diff --git a/methods/actions.js b/methods/actions.js index 0882096..8fd132a 100644 --- a/methods/actions.js +++ b/methods/actions.js @@ -8,6 +8,6 @@ if (fs.existsSync(path.join(process.cwd() + "/npm"))) { const importFresh = require(rootModules+'import-fresh'); -var remuxContainer = importFresh('./library/actions/remuxContainer.js') +module.exports.remuxContainer = importFresh('./library/actions/remuxContainer.js') +module.exports.transcodeStandardiseAudioCodecs = importFresh('./library/actions/transcodeStandardiseAudioCodecs.js') -module.exports.remuxContainer = remuxContainer diff --git a/methods/filters.js b/methods/filters.js index 925d401..624f2ed 100644 --- a/methods/filters.js +++ b/methods/filters.js @@ -8,16 +8,8 @@ if (fs.existsSync(path.join(process.cwd() + "/npm"))) { const importFresh = require(rootModules+'import-fresh'); -var filterByAge = importFresh('./library/filters/filterByAge.js') -var filterByCodec = importFresh('./library/filters/filterByCodec.js') -var filterByMedium = importFresh('./library/filters/filterByMedium.js') -var filterByResolution = importFresh('./library/filters/filterByResolution.js') -var filterBySize = importFresh('./library/filters/filterBySize.js') - - - -module.exports.filterByAge = filterByAge -module.exports.filterByCodec = filterByCodec -module.exports.filterByMedium = filterByMedium -module.exports.filterByResolution = filterByResolution -module.exports.filterBySize = filterBySize +module.exports.filterByAge = importFresh('./library/filters/filterByAge.js') +module.exports.filterByCodec = importFresh('./library/filters/filterByCodec.js') +module.exports.filterByMedium = importFresh('./library/filters/filterByMedium.js') +module.exports.filterByResolution = importFresh('./library/filters/filterByResolution.js') +module.exports.filterBySize = importFresh('./library/filters/filterBySize.js') \ No newline at end of file diff --git a/methods/library.js b/methods/library.js index 6e41e43..605021a 100644 --- a/methods/library.js +++ b/methods/library.js @@ -7,9 +7,5 @@ if (fs.existsSync(path.join(process.cwd() + "/npm"))) { } const importFresh = require(rootModules+'import-fresh'); -var filters = importFresh('./filters.js') -var actions = importFresh('./actions.js') - -module.exports.filters = filters -module.exports.actions = actions - +module.exports.filters = importFresh('./filters.js') +module.exports.actions = importFresh('./actions.js') diff --git a/methods/library/actions/transcodeStandardiseAudioCodecs.js b/methods/library/actions/transcodeStandardiseAudioCodecs.js new file mode 100644 index 0000000..f3333cc --- /dev/null +++ b/methods/library/actions/transcodeStandardiseAudioCodecs.js @@ -0,0 +1,76 @@ + + +module.exports = function transcodeStandardiseAudioCodecs(file, audioEncoder) { + + + try { + + var audioIdx = -1 + var hasNonSpecifiedAudioCodecStream = false + var ffmpegCommandInsert = '' + + + //Function required responses + // preset + // processFile + // note + + + + var audioCodec = audioEncoder + + if (audioEncoder == 'dca') { + audioCodec = 'dts' + } + + + + for (var i = 0; i < file.ffProbeData.streams.length; i++) { + + + try { + if (file.ffProbeData.streams[i].codec_type.toLowerCase() == "audio") { + audioIdx++ + } + } catch (err) { } + + + try { + if (file.ffProbeData.streams[i].codec_type.toLowerCase() == "audio" && file.ffProbeData.streams[i].codec_name != audioCodec) { + + ffmpegCommandInsert += ` -c:a:${audioIdx} ${audioEncoder}` + hasNonSpecifiedAudioCodecStream = true + + } + } catch (err) { } + } + + + if (hasNonSpecifiedAudioCodecStream === true) { + + return { + preset: `,-map 0:v -map 0:a -map 0:s? -map 0:d? -c copy ${ffmpegCommandInsert}`, + processFile: true, + note: `File has audio streams which aren't in ${audioCodec} \n` + } + } + + + return { + preset: '', + processFile: false, + note: `File does not have any audio streams which aren't in ${audioCodec} \n` + } + + + + } catch (err) { + + return { + preset: '', + processFile: false, + note: `library.actions.transcodeStandardiseAudioCodecs error: ${err} \n` + } + + } +}