mirror of
https://github.com/gabehf/Tdarr_Plugins.git
synced 2026-03-10 07:50:29 -07:00
parent
2a0a7e1bfc
commit
c729fad9f5
113 changed files with 102 additions and 7662 deletions
|
|
@ -1,92 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:1 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -ac 2',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'The required channel count 2 is lower than the highest available channel count (6). Adding! \n',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
audioCodec: 'eac3',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:1 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 eac3 -ac 2',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'The required channel count 2 is lower than the highest available channel count (6). Adding! \n',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
audioCodec: 'eac3',
|
||||
channels: 6,
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:1 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 eac3 -ac 6',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'The required channel count 6 is lower than the highest available channel count (6). Adding! \n',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
audioCodec: 'eac3',
|
||||
channels: 8,
|
||||
language: 'fr',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:1 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 eac3 -ac 6',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'The required channel count (8) is higher than the highest channel available in specified lang tag (6). Adding lower channel track. \n',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Very Fast 1080p30" -e x265 --all-subtitles',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is being transcoded using HandBrake \n',
|
||||
handbrakeMode: true,
|
||||
ffmpegMode: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
handbrakePreset: 'Fast 576p25',
|
||||
videoEncoder: 'nvenc_h265',
|
||||
keepSubtitles: 'true',
|
||||
container: 'mp4',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Fast 576p25" -e nvenc_h265 --all-subtitles',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is being transcoded using HandBrake \n',
|
||||
handbrakeMode: true,
|
||||
ffmpegMode: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
handbrakePreset: 'Fast 576p25',
|
||||
videoEncoder: 'nvenc_h265',
|
||||
keepSubtitles: 'false',
|
||||
container: 'mov',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Fast 576p25" -e nvenc_h265 ',
|
||||
container: '.mov',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is being transcoded using HandBrake \n',
|
||||
handbrakeMode: true,
|
||||
ffmpegMode: false,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '<io> -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is being transcoded using custom arguments \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
cli: 'handbrake',
|
||||
arguments: '-Z "Very Fast 1080p30" --all-subtitles --all-audio',
|
||||
container: 'mp4',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Very Fast 1080p30" --all-subtitles --all-audio',
|
||||
container: '.mp4',
|
||||
handbrakeMode: true,
|
||||
ffmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is being transcoded using custom arguments \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
cli: 'ffmpeg',
|
||||
arguments: '<io>-c:v libx265 -crf 23 -ac 6 -c:a aac -preset veryfast',
|
||||
container: 'mov',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '<io>-c:v libx265 -crf 23 -ac 6 -c:a aac -preset veryfast',
|
||||
container: '.mov',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is being transcoded using custom arguments \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:1 -map 0:s? -map 0:d? -c copy -c:a:0 aac -ac 2',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'No en streams. The required channel count 2 is lower than the highest available channel count (6).Adding it and removing others! \n',
|
||||
handbrakeMode: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
audioCodec: 'eac3',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:1 -map 0:s? -map 0:d? -c copy -c:a:0 eac3 -ac 2',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'No en streams. The required channel count 2 is lower than the highest available channel count (6).Adding it and removing others! \n',
|
||||
handbrakeMode: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
audioCodec: 'eac3',
|
||||
language: 'fr',
|
||||
channels: '6',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:1 -map 0:s? -map 0:d? -c copy -c:a:0 eac3 -ac 6',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'No fr streams. The required channel count 6 is lower than the highest available channel count (6).Adding it and removing others! \n',
|
||||
handbrakeMode: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
audioCodec: 'aac',
|
||||
language: 'und',
|
||||
channels: '8',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'The best und stream already exists. It is the only audio stream. \n',
|
||||
handbrakeMode: false,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
infoLog: 'Streams are in the correct order!',
|
||||
},
|
||||
},
|
||||
{
|
||||
// orig
|
||||
// 0 vid h264
|
||||
// 1 flac eng
|
||||
// 2 ac3 eng
|
||||
// 3 eac3 eng
|
||||
// 4 aac fre
|
||||
// 5 aac eng
|
||||
// 6 sub fre
|
||||
|
||||
// expect
|
||||
// 4 aac fre
|
||||
// 2 ac3 eng
|
||||
// 1 flac eng
|
||||
// 3 eac3 eng
|
||||
// 5 aac eng
|
||||
// 6 sub fre
|
||||
// 0 vid h264
|
||||
|
||||
// console.log(streams.map(stream => {
|
||||
// return {
|
||||
// "index": stream.index,
|
||||
// codec_name: stream.codec_name,
|
||||
// codec_type: stream.codec_type,
|
||||
// language: stream.tags.language,
|
||||
// }
|
||||
// }))
|
||||
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_2.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
processOrder: 'codecs,channels,languages,streamTypes',
|
||||
languages: 'fre,eng',
|
||||
streamTypes: 'audio,subtitle,video',
|
||||
codecs: 'ac3,flac,eac3,aac',
|
||||
channels: '7.1,5.1,2,1',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '<io> -c copy -map 0:4 -map 0:2 -map 0:1 -map 0:3 -map 0:5 -map 0:6 -map 0:0',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
infoLog: 'Streams are not in the correct order!',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is not in mkv \n',
|
||||
handbrakeMode: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mkv',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is not in mkv \n',
|
||||
handbrakeMode: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: ', -map 0 -c copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is already in mp4 \n',
|
||||
handbrakeMode: false,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: "File does not have any audio streams which aren't in aac \n",
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_2.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 aac -c:a:1 aac -c:a:2 aac',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: "File has audio streams which aren't in aac \n",
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_2.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
audioCodec: 'eac3',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 eac3 -c:a:1 eac3 -c:a:3 eac3 -c:a:4 eac3',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: "File has audio streams which aren't in eac3 \n",
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_2.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
infoLog: '☑File bitrate is within filter limits. Moving to next plugin.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
upperBound: 500,
|
||||
lowerBound: 0,
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
infoLog: '☒File bitrate is not within filter limits. Breaking out of plugin stack.\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
upperBound: 10000,
|
||||
lowerBound: 0,
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
infoLog: '☑File bitrate is within filter limits. Moving to next plugin.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
upperBound: 10000,
|
||||
lowerBound: 9000,
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
infoLog: '☒File bitrate is not within filter limits. Breaking out of plugin stack.\n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: false, infoLog: '' },
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecsToProcess: 'h264',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: true, infoLog: 'File is in codecsToProcess. Moving to next plugin.' },
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecsToProcess: 'h265',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: false, infoLog: 'File is not in codecsToProcess. Breaking out of plugin stack.' },
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecsToNotProcess: 'h264',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: false, infoLog: 'File is in codecsToNotProcess. Breaking out of plugin stack.' },
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecsToNotProcess: 'h265',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: true, infoLog: 'File is not in codecsToNotProcess. Moving to next plugin.' },
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: false, infoLog: '' },
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecTagStringsToProcess: 'avc1,rand',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: true, infoLog: 'File is in codecTagStringsToProcess. Moving to next plugin.' },
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecTagStringsToNotProcess: 'avc1,rand',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: false, infoLog: 'File is in codecTagStringsToNotProcess. Breaking out of plugin stack.' },
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH265_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecTagStringsToProcess: 'avc1,rand',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: false, infoLog: 'File is not in codecTagStringsToProcess. Breaking out of plugin stack.' },
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH265_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecTagStringsToNotProcess: 'avc1,rand',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: { processFile: true, infoLog: 'File is not in codecTagStringsToNotProcess. Moving to next plugin.' },
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false, infoLog: '',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
resolutionsToProcess: '480p,720p',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
infoLog: 'File is in resolutionsToProcess. Moving to next plugin.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
resolutionsToProcess: '480p,1080p',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
infoLog: 'File is not in resolutionsToProcess. Breaking out of plugin stack.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
resolutionsToNotProcess: '480p,720p',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
infoLog: 'File is in resolutionsToNotProcess. Breaking out of plugin stack.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
resolutionsToNotProcess: '480p,1080p',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
infoLog: 'File is not in resolutionsToNotProcess. Moving to next plugin.',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
infoLog: 'File is within lower and upper bound size limits. Moving to next plugin.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
upperBound: 0.5,
|
||||
lowerBound: 0,
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
infoLog: 'File is not within lower and upper bound size limits. Breaking out of plugin stack.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
upperBound: 2,
|
||||
lowerBound: 0,
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
infoLog: 'File is within lower and upper bound size limits. Moving to next plugin.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
upperBound: 4,
|
||||
lowerBound: 2,
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
infoLog: 'File is not within lower and upper bound size limits. Breaking out of plugin stack.',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:a -map 0:s? -map 0:d? -c copy -c:v:0 libx265 -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n☒File is not hevc! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH265_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is a video! \n☑File is already in hevc! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Very Fast 1080p30" --all-subtitles --all-audio',
|
||||
container: '.mkv',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not in desired codec! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH265_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is already in hevc! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecs_to_exclude: 'h264',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is already in h264! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecs_to_exclude: 'hevc',
|
||||
cli: 'handbrake',
|
||||
transcode_arguments: '-Z "Very Fast 480p30"',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Very Fast 480p30"',
|
||||
container: '.mkv',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not in desired codec! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:a -c copy -c:v:0 libx265 -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n☒File is not hevc! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH265_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is a video! \n☑File is already in hevc! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:a -c copy -c:v:0 libx265 -crf 20',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n☒File is not hevc! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH265_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is a video! \n☑File is already in hevc! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:a -c copy -c:v:0 hevc_nvenc -crf 20',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n☒File is not hevc! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH265_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is a video! \n☑File is already in hevc! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_2.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑ Preferred language is already first audio track! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_2.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
preferred_language: 'fre',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -c copy -map 0:v -map 0:a:3 -disposition:a:0 default -map 0:a:0 -map 0:a:1 -disposition:a:1 0 -map 0:a:2 -disposition:a:2 0 -disposition:a:3 0 -map 0:a:4 -disposition:a:4 0 -map 0:s? -map 0:d? ',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒ Desired audio lang is not first audio stream, moving! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_2.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☒ No subtitle tracks in desired language! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_2.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
preferred_language: 'fre',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑ Preferred language is already first subtitle track! \n',
|
||||
},
|
||||
|
||||
}, {
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_3.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
preferred_language: 'fre',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -c copy -map 0:v -map 0:a -map 0:s:1 -disposition:s:0 default -map 0:s:0 -disposition:s:1 0 -map 0:d? ',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒ Desired subtitle lang is not first subtitle stream, moving! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑ File is already in h264, no need to transcode! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH265_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
handbrake_preset: 'Very Fast 1080p30',
|
||||
output_container: '.mp4',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Very Fast 1080p30" -e nvenc_h264 --all-audio --all-subtitles',
|
||||
container: '.mp4',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒ File is not in h264, transcoding! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-vsync 0 -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid ,-map 0:v -map 0:a -map 0:s? -map -:d? -c copy -c:v:0 hevc_nvenc -preset medium -profile:v main10 -rc-lookahead 32 -spatial_aq:v 1 -aq-strength:v 8 -max_muxing_queue_size 4096 -b:v 967680 -maxrate 1257984 -minrate 677376 -bufsize 1205959 -map_metadata:g -1',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'No valid resolution selected, defaulting to 8KUHD.\n'
|
||||
+ 'Video details: h264-720p \n'
|
||||
+ ' 1280x720x25@8 bits.\n'
|
||||
+ 'Video bitrate is 1206Kbps, overall is 1591Kbps. Calculated target is 1613Kbps.\n'
|
||||
+ '☒H264 Resolution is 720p, bitrate was 1206Kbps. HEVC target bitrate will be 968Kbps.\n'
|
||||
+ '☒Transcoding to HEVC.',
|
||||
},
|
||||
}, {
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
ffmpegPreset: 'veryslow',
|
||||
container: 'mkv',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-vsync 0 -hwaccel cuda -hwaccel_output_format cuda -c:v hevc_cuvid ,-map 0:v -map 0:a -map 0:s? -map -:d? -c copy -c:v:0 hevc_nvenc -preset veryslow -profile:v main10 -rc-lookahead 32 -spatial_aq:v 1 -aq-strength:v 8 -max_muxing_queue_size 4096 -b:v 3207442 -maxrate 4717440 -minrate 2540160 -bufsize 3628800 -map_metadata:g -1',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'No valid resolution selected, defaulting to 8KUHD.\n'
|
||||
+ 'Video details: hevc-1080p \n'
|
||||
+ ' 1920x1080x25@8 bits.\n'
|
||||
+ 'Video bitrate is NaNKbps, overall is 3207Kbps. Calculated target is 3629Kbps.\n'
|
||||
+ '☒HEVC Bitrate for 1080p could not be determined, \n'
|
||||
+ ' using sensible default of 3207Kbps.\n'
|
||||
+ '☒Transcoding to HEVC.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
maxResolution: '720p',
|
||||
ffmpegPreset: 'veryslow',
|
||||
container: 'mkv',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-vsync 0 -hwaccel cuda -hwaccel_output_format cuda -c:v hevc_cuvid -resize 1280x720 ,-map 0:v -map 0:a -map 0:s? -map -:d? -c copy -c:v:0 hevc_nvenc -preset veryslow -profile:v main10 -rc-lookahead 32 -spatial_aq:v 1 -aq-strength:v 8 -max_muxing_queue_size 4096 -b:v 1612800 -maxrate 2096640 -minrate 1128960 -bufsize 1612800 -map_metadata:g -1',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Resizing to 1280x720.\n'
|
||||
+ 'Video details: hevc-1080p \n'
|
||||
+ ' 1920x1080x25@8 bits.\n'
|
||||
+ 'Video bitrate is NaNKbps, overall is 3207Kbps. Calculated target is 1613Kbps.\n'
|
||||
+ '☒HEVC Bitrate for 1080p could not be determined, \n'
|
||||
+ ' using sensible default of 1613Kbps.\n'
|
||||
+ '☒Transcoding to HEVC.',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
// modify so no processing needed
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.ffProbeData.streams[0].codec_name = 'hevc';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
maxResolution: '1080p',
|
||||
ffmpegPreset: 'veryslow',
|
||||
container: 'mkv',
|
||||
compressionFactor: '1',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '-vsync 0 -hwaccel cuda -hwaccel_output_format cuda -c:v hevc_cuvid ,-map 0:v -map 0:a -map 0:s? -map -:d? -c copy -c:v:0 hevc_nvenc -preset veryslow -profile:v main10 -rc-lookahead 32 -spatial_aq:v 1 -aq-strength:v 8 -max_muxing_queue_size 4096 ',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Video details: hevc-1080p \n'
|
||||
+ ' 1918x1080x25@8 bits.\n'
|
||||
+ 'Video bitrate is 6454Kbps, overall is 8249Kbps. Calculated target is 51786Kbps.\n'
|
||||
+ '☑HEVC Bitrate is within limits.\n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
FFmpegMode: true,
|
||||
handBrakeMode: false,
|
||||
infoLog: '☒ Removing audio track in language und\n'
|
||||
+ '☒ *** All audio tracks would have been removed. Defaulting to keeping all tracks for this file.\n'
|
||||
+ '☒ Transcoding to HEVC using NVidia NVENC\n'
|
||||
+ '☑ No subtitle processing necessary',
|
||||
processFile: true,
|
||||
preset: ' -c:v h264_cuvid,-map 0 -map -0:d -c:v hevc_nvenc -qmin 0 -cq:v 30 -b:v 602k -maxrate:v 2602k -preset medium -rc-lookahead 32 -spatial_aq:v 1 -aq-strength:v 8 -c:a copy -c:s copy -max_muxing_queue_size 9999 -bf 5 -analyzeduration 2147483647 -probesize 2147483647',
|
||||
reQueueAfter: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
FFmpegMode: true,
|
||||
handBrakeMode: false,
|
||||
infoLog: '☑ File is in HEVC codec and in MKV\n'
|
||||
+ '☑ No video processing necessary\n'
|
||||
+ '☑ No subtitle processing necessary\n'
|
||||
+ '☑ No need to process file',
|
||||
processFile: false,
|
||||
preset: ',-map 0 -map -0:d -c:v copy -c:a copy -c:s copy -max_muxing_queue_size 9999 -bf 5 -analyzeduration 2147483647 -probesize 2147483647',
|
||||
reQueueAfter: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.ffProbeData.streams[0].bit_rate = undefined;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
target_bitrate_720p: '1500000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
FFmpegMode: true,
|
||||
handBrakeMode: false,
|
||||
infoLog: '☒ Removing audio track in language und\n'
|
||||
+ '☒ *** All audio tracks would have been removed. Defaulting to keeping all tracks for this file.\n'
|
||||
+ '☒ Transcoding to HEVC using NVidia NVENC\n'
|
||||
+ '☑ No subtitle processing necessary',
|
||||
processFile: true,
|
||||
preset: ' -c:v h264_cuvid,-map 0 -map -0:d -c:v hevc_nvenc -qmin 0 -cq:v 30 -b:v 1500k -maxrate:v 3500k -preset medium -rc-lookahead 32 -spatial_aq:v 1 -aq-strength:v 8 -c:a copy -c:s copy -max_muxing_queue_size 9999 -bf 5 -analyzeduration 2147483647 -probesize 2147483647',
|
||||
reQueueAfter: true,
|
||||
},
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
processFile: true,
|
||||
preset: ', -sn -map 0:v -c:v copy -b:v 758k -minrate 530k -maxrate 985k -bufsize 1517k -map 0:a -c:a copy ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Converting video, NOT resizing. 720p, h264 --> 720p, hevc. bitrate = 1517 --> 758, multiplier 0.5. \n'
|
||||
+ 'Not converting audio. \n'
|
||||
+ '2 channels - \n'
|
||||
+ '6 channels - und aac \n'
|
||||
+ '8 channels - ',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is processed already, nothing to do',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
resize: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is processed already, nothing to do',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
bitrate_cutoff: '6000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
processFile: true,
|
||||
preset: ', -sn -map 0:v -c:v copy -b:v 3933k -minrate 2753k -maxrate 5112k -bufsize 7866k -map 0:a -c:a copy ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Converting video, NOT resizing. 1080p, h264 --> 1080p, hevc. bitrate = 7866 --> 3933, multiplier 0.5. \n'
|
||||
+ 'Not converting audio. \n'
|
||||
+ '2 channels - eng flac \n'
|
||||
+ '6 channels - \n'
|
||||
+ '8 channels - ',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
bitrate_cutoff: '8000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is processed already, nothing to do',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
preset: ', -map_metadata 0 -id3v2_version 3 -b:a 320k',
|
||||
container: '.mp3',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
processFile: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'undefined☒Codec excluded \n ☑Codec not excluded \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleAAC_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
preset: ', -map_metadata 0 -id3v2_version 3 -b:a 320k',
|
||||
container: '.mp3',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
processFile: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'undefined☒Codec excluded \n ☑Codec not excluded \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleMP3_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
preset: ', -map_metadata 0 -id3v2_version 3 -b:a 320k',
|
||||
container: '.mp3',
|
||||
handbrakeMode: false,
|
||||
ffmpegMode: true,
|
||||
processFile: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'undefined☒Codec excluded \n ☒Codec excluded \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,145 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-c:v h264_cuvid, -map 0 -c:v hevc_nvenc -cq:v 19 -b:v 758k -minrate 530k -maxrate 985k -bufsize 1517k -spatial_aq:v 1 -rc-lookahead:v 32 -c:a copy -c:s copy -max_muxing_queue_size 9999 ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Container for output selected as mkv. \n'
|
||||
+ 'Current bitrate = 1517 \n'
|
||||
+ 'Bitrate settings: \n'
|
||||
+ 'Target = 758 \n'
|
||||
+ 'Minimum = 530 \n'
|
||||
+ 'Maximum = 985 \n'
|
||||
+ 'File is not hevc or vp9. Transcoding. \n',
|
||||
container: '.mkv',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is already hevc or vp9 & in mkv. \n',
|
||||
container: '.mkv',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
enable_10bit: 'true',
|
||||
force_conform: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-c:v h264_cuvid, -map 0 -c:v hevc_nvenc -cq:v 19 -b:v 758k -minrate 530k -maxrate 985k -bufsize 1517k -spatial_aq:v 1 -rc-lookahead:v 32 -c:a copy -c:s copy -max_muxing_queue_size 9999 -pix_fmt p010le ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Container for output selected as mp4. \n'
|
||||
+ 'Current bitrate = 1517 \n'
|
||||
+ 'Bitrate settings: \n'
|
||||
+ 'Target = 758 \n'
|
||||
+ 'Minimum = 530 \n'
|
||||
+ 'Maximum = 985 \n'
|
||||
+ 'File is not hevc or vp9. Transcoding. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
enable_10bit: 'true',
|
||||
force_conform: 'true',
|
||||
bitrate_cutoff: '10000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Current bitrate is below set cutoff of 10000. Cancelling plugin. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
enable_10bit: 'true',
|
||||
force_conform: 'true',
|
||||
bitrate_cutoff: '1000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-c:v h264_cuvid, -map 0 -c:v hevc_nvenc -cq:v 19 -b:v 758k -minrate 530k -maxrate 985k -bufsize 1517k -spatial_aq:v 1 -rc-lookahead:v 32 -c:a copy -c:s copy -max_muxing_queue_size 9999 -pix_fmt p010le ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Container for output selected as mp4. \n'
|
||||
+ 'Current bitrate = 1517 \n'
|
||||
+ 'Bitrate settings: \n'
|
||||
+ 'Target = 758 \n'
|
||||
+ 'Minimum = 530 \n'
|
||||
+ 'Maximum = 985 \n'
|
||||
+ 'File is not hevc or vp9. Transcoding. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
force_conform: 'false',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -c copy ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is hevc or vp9 but is not in mp4 container. Remuxing. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,145 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0 -c:v libx265 -b:v 758k -minrate 530k -maxrate 985k -bufsize 1517k -c:a copy -c:s copy -max_muxing_queue_size 9999 ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Container for output selected as mkv. \n'
|
||||
+ 'Current bitrate = 1517 \n'
|
||||
+ 'Bitrate settings: \n'
|
||||
+ 'Target = 758 \n'
|
||||
+ 'Minimum = 530 \n'
|
||||
+ 'Maximum = 985 \n'
|
||||
+ 'File is not hevc or vp9. Transcoding. \n',
|
||||
container: '.mkv',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is already hevc or vp9 & in mkv. \n',
|
||||
container: '.mkv',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
enable_10bit: 'true',
|
||||
force_conform: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0 -c:v libx265 -b:v 758k -minrate 530k -maxrate 985k -bufsize 1517k -c:a copy -c:s copy -max_muxing_queue_size 9999 -pix_fmt p010le ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Container for output selected as mp4. \n'
|
||||
+ 'Current bitrate = 1517 \n'
|
||||
+ 'Bitrate settings: \n'
|
||||
+ 'Target = 758 \n'
|
||||
+ 'Minimum = 530 \n'
|
||||
+ 'Maximum = 985 \n'
|
||||
+ 'File is not hevc or vp9. Transcoding. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
enable_10bit: 'true',
|
||||
force_conform: 'true',
|
||||
bitrate_cutoff: '10000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Current bitrate is below set bitrate cutoff of 10000. Nothing to do, cancelling plugin. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
enable_10bit: 'true',
|
||||
force_conform: 'true',
|
||||
bitrate_cutoff: '1000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0 -c:v libx265 -b:v 758k -minrate 530k -maxrate 985k -bufsize 1517k -c:a copy -c:s copy -max_muxing_queue_size 9999 -pix_fmt p010le ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Container for output selected as mp4. \n'
|
||||
+ 'Current bitrate = 1517 \n'
|
||||
+ 'Bitrate settings: \n'
|
||||
+ 'Target = 758 \n'
|
||||
+ 'Minimum = 530 \n'
|
||||
+ 'Maximum = 985 \n'
|
||||
+ 'File is not hevc or vp9. Transcoding. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
force_conform: 'false',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -c copy ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File is hevc or vp9 but is not in mp4 container. Remuxing. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -c copy -max_muxing_queue_size 9999 ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is mp4 but requested to be mkv container. Remuxing. \n',
|
||||
container: '.mkv',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
force_conform: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is already in mp4 container. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -metadata title= -c copy -map 0 -max_muxing_queue_size 9999',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File has title metadata. Removing \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.meta.Title = undefined;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File has no title metadata \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: "☑File doesn't contain audio tracks which are unwanted or that require tagging.\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
language: 'eng',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -map -0:a:3 -c copy -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒Audio stream 0:a:3 has unwanted language tag fre, removing. \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.ffProbeData.streams[3].tags.title = 'description';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
language: 'eng',
|
||||
commentary: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -map -0:a:2 -map -0:a:3 -c copy -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒Audio stream 0:a:2 detected as being descriptive, removing. \n'
|
||||
+ '☒Audio stream 0:a:3 has unwanted language tag fre, removing. \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.ffProbeData.streams[2].tags.title = 'description';
|
||||
file.ffProbeData.streams[3].tags.language = 'und';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
language: 'eng',
|
||||
commentary: 'true',
|
||||
tag_language: 'eng',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -map -0:a:1 -map -0:a:2 -metadata:s:a:2 language=eng -map -0:a:3 -c copy -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒Audio stream 0:a:1 detected as being descriptive, removing. \n'
|
||||
+ '☒Audio stream 0:a:2 has unwanted language tag und, removing. \n'
|
||||
+ '☒Audio stream 0:a:2 detected as having no language, tagging as eng. \n'
|
||||
+ '☒Audio stream 0:a:3 has unwanted language tag fre, removing. \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: "☑File doesn't contain subtitle tracks which are unwanted or that require tagging.\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -map -0:s:0 -c copy -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒Subtitle stream 0:s:0 has unwanted language tag fre, removing. \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
|
||||
file.ffProbeData.streams[7] = _.cloneDeep(file.ffProbeData.streams[6]);
|
||||
file.ffProbeData.streams[6].tags.title = 'description';
|
||||
file.ffProbeData.streams[7].tags.language = 'und';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
language: 'eng,und',
|
||||
commentary: 'true',
|
||||
tag_language: 'eng',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -map -0:s:0 -map -0:s:0 -metadata:s:s:1 language=eng -c copy -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒Subtitle stream 0:s:0 has unwanted language tag fre, removing. \n'
|
||||
+ '☒Subtitle stream 0:s:0 detected as being descriptive, removing. \n'
|
||||
+ '☒Subtitle stream 0:s:1 has no language, tagging as eng. \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,90 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒Plugin has not been configured, please configure required options. Skipping this plugin. \n',
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
aac_stereo: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File contains all required audio formats. \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
aac_stereo: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒Audio track is 2 channel but is not AAC. Converting. \n'
|
||||
+ '☒Audio track is 2 channel but is not AAC. Converting. \n'
|
||||
+ '☒Audio track is 2 channel but is not AAC. Converting. \n',
|
||||
preset: ', -map 0 -c:v copy -c:a copy -c:a:0 aac -c:a:1 aac -c:a:2 aac -strict -2 -c:s copy -max_muxing_queue_size 9999 ',
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.ffProbeData.streams[1].channels = 8;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
aac_stereo: 'false',
|
||||
downmix: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒Audio track is 8 channel, no 6 channel exists. Creating 6 channel from 8 channel. \n',
|
||||
preset: ', -map 0 -c:v copy -c:a copy -map 0:1 -c:a:0 ac3 -ac 6 -metadata:s:a:0 title="5.1" -strict -2 -c:s copy -max_muxing_queue_size 9999 ',
|
||||
},
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,103 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
infoLog: '☑ Streams are in expected order. \n ',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
infoLog: '☑ Streams are in expected order. \n ',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.ffProbeData.streams[1].channels = 8;
|
||||
file.ffProbeData.streams[2].channels = 6;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:0 -map 0:3 -map 0:4 -map 0:5 -map 0:2 -map 0:1 -map 0:6 -c copy -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
infoLog: '☒ Audio 6ch not second. \n'
|
||||
+ '☒ Audio 2ch not first. \n'
|
||||
+ '☒ Audio 2ch not first. \n'
|
||||
+ '☒ Audio 2ch not first. \n'
|
||||
+ '☒ Streams are out of order, reorganizing streams. Video, Audio, Subtitles. \n',
|
||||
reQueueAfter: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.ffProbeData.streams[1].channels = 8;
|
||||
file.ffProbeData.streams[2].channels = 6;
|
||||
const video = file.ffProbeData.streams.splice(0, 1)[0];
|
||||
file.ffProbeData.streams.push(video);
|
||||
const subs = file.ffProbeData.streams.splice(5, 1)[0];
|
||||
file.ffProbeData.streams.unshift(subs);
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:6 -map 0:3 -map 0:4 -map 0:5 -map 0:2 -map 0:1 -map 0:0 -c copy -max_muxing_queue_size 9999',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
infoLog: '☒ Audio not second. \n'
|
||||
+ '☒ Audio not second. \n'
|
||||
+ '☒ Audio 6ch not second. \n'
|
||||
+ '☒ Audio not second. \n'
|
||||
+ '☒ Audio 2ch not first. \n'
|
||||
+ '☒ Audio not second. \n'
|
||||
+ '☒ Audio 2ch not first. \n'
|
||||
+ '☒ Audio not second. \n'
|
||||
+ '☒ Audio 2ch not first. \n'
|
||||
+ '☒ Video not first. \n'
|
||||
+ '☒ Streams are out of order, reorganizing streams. Video, Audio, Subtitles. \n',
|
||||
reQueueAfter: true,
|
||||
},
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
container: '.mp4',
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: "☑File doesn't contain any unwanted image format streams.\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.ffProbeData.streams[0].codec_name = 'mjpeg';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0 -c copy -max_muxing_queue_size 9999 -map -v:0 ',
|
||||
handBrakeMode: false,
|
||||
container: '.mkv',
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File has image format stream, removing. \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: "☑File doesn't contain subtitle or audio codecs which were unwanted or that require tagging.\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
tag_subtitle_codecs: 'subrip',
|
||||
tag_audio_codecs: 'aac',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -map -0:a:3 -map -0:a:4 -map -0:s:0 -c copy -max_muxing_queue_size 4096',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒audio stream detected as unwanted. removing audio stream 0:a:3 - Français E-AC3 2.0 - aac \n'
|
||||
+ '☒audio stream detected as unwanted. removing audio stream 0:a:4 - Anglais E-AC3 2.0 - aac \n'
|
||||
+ '☒Subtitle stream detected as unwanted. removing subtitle stream 0:s:0 - Français - subrip. \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ' -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi ,-map 0:v -map 0:a -map 0:s? -map 0:d? -map 0:t? -c copy -c:v:0 hevc_vaapi -b:v 758k -minrate 530k -maxrate 985k -bufsize 1M -max_muxing_queue_size 1024 ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☒ Video stream 0 is not HEVC, transcode required.\n'
|
||||
+ ' ☑ Stream analysis complete, processing required.\n'
|
||||
+ ' ',
|
||||
container: 'mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑ Stream analysis complete, no processing required.\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
minBitrate: '4000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ' -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi ,-map 0:v -map 0:a -map 0:s? -map 0:d? -map 0:t? -c copy ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: "☒ Input file's bitrate 1517 is lower than the minimum bitrate threshold of 4000. Skipping this plugin.\n"
|
||||
+ '☑ Stream analysis complete, processing required.\n'
|
||||
+ ' ',
|
||||
container: 'mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
remuxOnly: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☒ RemuxOnly is enabled and file is not a remux. Unable to process.\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.file = `remux ${file.file}`;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
remuxOnly: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ' -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi ,-map 0:v -map 0:a -map 0:s? -map 0:d? -map 0:t? -c copy -c:v:0 hevc_vaapi -b:v 3933k -minrate 2753k -maxrate 5112k -bufsize 1M -max_muxing_queue_size 1024 ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☒ Video stream 0 is not HEVC, transcode required.\n'
|
||||
+ ' ☑ Stream analysis complete, processing required.\n'
|
||||
+ ' ',
|
||||
container: 'mkv',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File has no title metadata \n☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is already in h264! \n☑File has no subs \n☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Very Fast 1080p30"',
|
||||
container: '.mp4',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not in h264! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.meta.Title = undefined;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is already in h264! \n'
|
||||
+ '☑File has no subs \n'
|
||||
+ '☑File has no title metadata☑File has aac track \n'
|
||||
+ '☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is already in h264! \n☑File has no subs \n☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "Fast 1080p30"',
|
||||
container: '.mp4',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not in h264! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.meta.Title = undefined;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is already in h264! \n'
|
||||
+ '☑File has no subs \n'
|
||||
+ '☑File has no title metadata☑File has aac track \n'
|
||||
+ '☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑ File does not have any streams that need to be transcoded! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
codecs_to_transcode: 'aac',
|
||||
codec: 'eac3',
|
||||
bitrate: '640k',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -c copy -map 0:v -map 0:1 -c:1 eac3 -b:a 640k -map 0:s? -map 0:d? -max_muxing_queue_size 9999',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: "☒ File has streams which aren't in desired codec! \n",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {
|
||||
originalLibraryFile: require('../sampleData/media/sampleH264_1.json'),
|
||||
},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'New file has size 1.008 MB which is 100% of original file size: 1.008 MB',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
upperBound: '110',
|
||||
lowerBound: '35',
|
||||
},
|
||||
otherArguments: {
|
||||
originalLibraryFile: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.file_size = 3;
|
||||
return file;
|
||||
})(),
|
||||
},
|
||||
},
|
||||
output: 'New file size not within limits. New file has size 1.008 MB which is 33% of original file size: 3.000 MB. lowerBound is 35%',
|
||||
error: {
|
||||
shouldThrow: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: require('../sampleData/media/sampleH264_1.json'),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
upperBound: '120',
|
||||
lowerBound: '35',
|
||||
},
|
||||
otherArguments: {
|
||||
originalLibraryFile: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.file_size = 0.1;
|
||||
return file;
|
||||
})(),
|
||||
},
|
||||
},
|
||||
output: 'New file size not within limits. New file has size 1.008 MB which is 1007% of original file size: 0.100 MB. upperBound is 120%',
|
||||
error: {
|
||||
shouldThrow: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -c copy -c:v:0 libx265 -preset:v slow -pix_fmt yuv420p10le -x265-params "crf=22:aq-mode=3"',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not in hevc! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is already in hevc! \n'
|
||||
+ '☑ All audio streams are in aac! \n'
|
||||
+ '☑File has no title metadata \n'
|
||||
+ '☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0 -c:v copy -c:a copy -c:a:0 ac3 -c:s copy -c:d copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒ File has surround audio which is NOT in ac3! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑ All surround audio streams are in ac3! \n☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑ All surround audio streams are in ac3! \n☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-fflags +genpts -hwaccel qsv -c:v h264_qsv<io> -map 0 -c:v hevc_qsv -b:v 759k -minrate 569k -maxrate 949k -bufsize 1517k -preset slow \n'
|
||||
+ ' -c:a copy -c:s copy -max_muxing_queue_size 9999 ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑ It looks like the current bitrate is 1517k. \n'
|
||||
+ '\n'
|
||||
+ 'Container for output selected as mkv. \n'
|
||||
+ 'Encode variable bitrate settings: \n'
|
||||
+ 'Target = 759k \n'
|
||||
+ 'Minimum = 569k \n'
|
||||
+ 'Maximum = 949k \n'
|
||||
+ 'File Transcoding... \n',
|
||||
container: '.mkv',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
encoder_speedpreset: 'fast',
|
||||
enable_10bit: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-fflags +genpts -hwaccel qsv<io> -map 0 -c:v hevc_qsv -b:v 759k -minrate 569k -maxrate 949k -bufsize 1517k -preset fast \n'
|
||||
+ ' -c:a copy -c:s copy -max_muxing_queue_size 9999 -profile:v main10 -pix_fmt p010le ',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑ It looks like the current bitrate is 1517k. \n'
|
||||
+ '10 bit encode enabled. Setting Main10 Profile & 10 bit pixel format \n'
|
||||
+ '\n'
|
||||
+ 'Container for output selected as mp4. \n'
|
||||
+ 'Encode variable bitrate settings: \n'
|
||||
+ 'Target = 759k \n'
|
||||
+ 'Minimum = 569k \n'
|
||||
+ 'Maximum = 949k \n'
|
||||
+ 'File Transcoding... \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
container: 'mp4',
|
||||
encoder_speedpreset: 'fast',
|
||||
enable_10bit: 'true',
|
||||
bitrate_cutoff: '2000',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑ It looks like the current bitrate is 1517k. \n'
|
||||
+ '☑ Current bitrate is below set cutoff of 2000k. Cancelling plugin. \n',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
infoLog: '☑ No 2 channel audio stream exists. \n ',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
|
||||
file.ffProbeData.streams[1].channels = 6;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
channels: '6',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0 -c copy -disposition:1 default -disposition:2 0 -disposition:3 0 -disposition:4 0 -disposition:5 0 ',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
infoLog: '☒ Matching audio stream is not set to default. \n'
|
||||
+ '☒ Setting 6 channel matching audio stream to default. Remove default from all other audio streams \n',
|
||||
reQueueAfter: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-c:v h264_cuvid,-map 0 -dn -c:v hevc_nvenc -pix_fmt p010le -qmin 0 -cq:v 30 -b:v 964k -maxrate:v 2964k -preset slow -rc-lookahead 32 -spatial_aq:v 1 -aq-strength:v 8 -a53cc 0 -c:a copy -c:s copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n'
|
||||
+ '☒File is 720p!\n'
|
||||
+ '☒File is not hevc!\n'
|
||||
+ '☒File bitrate is 1205kb!\n'
|
||||
+ 'File bitrate is LOWER than the Default Target Bitrate!\n'
|
||||
+ '☒Target Bitrate set to 964kb!\n'
|
||||
+ 'File is being transcoded!\n',
|
||||
maxmux: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n☑File is already in hevc! \n',
|
||||
maxmux: false,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video Without Mjpeg! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.ffProbeData.streams[0].codec_name = 'mjpeg';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: ',-map 0 -map -0:v:1 -c:v copy -c:a copy -c:s copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not a video but has Mjpeg Stream! \n'
|
||||
+ '☑File is a video With Mjpeg! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map_metadata -1 -map 0:v -map 0:a -c:v copy -c:a copy -c:s mov_text',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑ File is already in h264!\n☒ File has title metadata\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map_metadata -1 -map 0:V -map 0:a -c:v libx264 -preset medium -c:a aac -strict -2 -c:s mov_text',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒ File is not in h264!\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
FFmpeg_preset: 'fast',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map_metadata -1 -map 0:V -map 0:a -c:v libx264 -preset fast -c:a aac -strict -2 -c:s mov_text',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒ File is not in h264!\n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
FFmpegMode: true,
|
||||
handBrakeMode: false,
|
||||
infoLog: '☒ Will convert multi channel audio to AC3\n'
|
||||
+ '☒ Transcoding to HEVC (software)\n'
|
||||
+ 'Encoder configuration:\n'
|
||||
+ '• Original Bitrate: 1517\n'
|
||||
+ '• Target Bitrate: 1517\n'
|
||||
+ '• Minimum Bitrate: 1061\n'
|
||||
+ '• Maximum Bitrate: 1972\n'
|
||||
+ '\n'
|
||||
+ '☑ No subtitle processing necessary',
|
||||
processFile: true,
|
||||
preset: ',-map 0 -map -0:d -c:v libx265 -b:v 1517k -minrate 1061k -maxrate 1972k -bufsize 1517k -c:a copy -c:a:0 ac3 -c:s copy -max_muxing_queue_size 4096',
|
||||
reQueueAfter: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
nvenc: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
FFmpegMode: true,
|
||||
handBrakeMode: false,
|
||||
infoLog: '☒ Will convert multi channel audio to AC3\n'
|
||||
+ '☒ Transcoding to HEVC using NVidia NVENC\n'
|
||||
+ 'Encoder configuration:\n'
|
||||
+ '• Original Bitrate: 1517\n'
|
||||
+ '• Target Bitrate: 1517\n'
|
||||
+ '• Minimum Bitrate: 1061\n'
|
||||
+ '• Maximum Bitrate: 1972\n'
|
||||
+ '\n'
|
||||
+ '☑ No subtitle processing necessary',
|
||||
processFile: true,
|
||||
preset: '-c:v h264_cuvid,-map 0 -map -0:d -c:v hevc_nvenc -cq:v 19 -b:v 1517k -minrate 1061k -maxrate 1972k -bufsize 1517k -spatial_aq:v 1 -rc-lookahead:v 32 -c:a copy -c:a:0 ac3 -c:s copy -max_muxing_queue_size 4096',
|
||||
reQueueAfter: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
nvenc: 'false',
|
||||
qsv: 'true',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
FFmpegMode: true,
|
||||
handBrakeMode: false,
|
||||
infoLog: '☒ Will convert multi channel audio to AC3\n'
|
||||
+ '☒ Transcoding to HEVC using VAAPI\n'
|
||||
+ 'Encoder configuration:\n'
|
||||
+ '• Original Bitrate: 1517\n'
|
||||
+ '• Target Bitrate: 1517\n'
|
||||
+ '• Minimum Bitrate: 1061\n'
|
||||
+ '• Maximum Bitrate: 1972\n'
|
||||
+ '\n'
|
||||
+ '☑ No subtitle processing necessary',
|
||||
processFile: true,
|
||||
preset: '-hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi,-map 0 -map -0:d -c:v hevc_vaapi -b:v 1517k -minrate 1061k -maxrate 1972k -bufsize 1517k -c:a copy -c:a:0 ac3 -c:s copy -max_muxing_queue_size 4096',
|
||||
reQueueAfter: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
container: '.mkv',
|
||||
FFmpegMode: true,
|
||||
handBrakeMode: false,
|
||||
infoLog: '☑ No multi channel audio found\n'
|
||||
+ '☑ No audio processing necessary\n'
|
||||
+ '☑ File is in HEVC codec and in MKV\n'
|
||||
+ '☑ No video processing necessary\n'
|
||||
+ '☑ No subtitle processing necessary\n'
|
||||
+ '☑ No need to process file',
|
||||
processFile: false,
|
||||
preset: ',-map 0 -map -0:d -c:v copy -c:a copy -c:s copy -max_muxing_queue_size 4096',
|
||||
reQueueAfter: false,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "H.264 MKV 480p30"',
|
||||
container: '.mkv',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not h264 480p! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "H.264 MKV 480p30"',
|
||||
container: '.mkv',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not h264 480p! \n',
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.ffProbeData.streams[0].width = 720;
|
||||
file.ffProbeData.streams[0].height = 480;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is h264 480p! \n'
|
||||
+ '☑File has no title and has no subs \n'
|
||||
+ '☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.ffProbeData.streams[0].width = 720;
|
||||
file.ffProbeData.streams[0].height = 480;
|
||||
|
||||
file.meta.Title = undefined;
|
||||
file.container = 'mkv';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is h264 480p! \n'
|
||||
+ '☑File has no title and has no subs \n'
|
||||
+ '☑File has no title metadata \n'
|
||||
+ '☑File has no subs \n'
|
||||
+ '☑File is in mkv container! \n'
|
||||
+ '☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,99 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is h264 720p! \n'
|
||||
+ '☑File has no title and has no subs \n'
|
||||
+ '☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "H.264 MKV 720p30"',
|
||||
container: '.mkv',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not h264 720p! \n',
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.ffProbeData.streams[0].width = 1280;
|
||||
file.ffProbeData.streams[0].height = 720;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is h264 720p! \n'
|
||||
+ '☑File has no title and has no subs \n'
|
||||
+ '☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.ffProbeData.streams[0].width = 1280;
|
||||
file.ffProbeData.streams[0].height = 720;
|
||||
|
||||
file.meta.Title = undefined;
|
||||
file.container = 'mkv';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is h264 720p! \n'
|
||||
+ '☑File has no title and has no subs \n'
|
||||
+ '☑File has no title metadata \n'
|
||||
+ '☑File has no subs \n'
|
||||
+ '☑File is in mkv container! \n'
|
||||
+ '☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is h264 1080p!☑File has no title and has no subs \n'
|
||||
+ '☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "H.264 MKV 1080p30"',
|
||||
container: '.mkv',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not h264 1080p! \n',
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.ffProbeData.streams[0].width = 1920;
|
||||
file.ffProbeData.streams[0].height = 1080;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is h264 1080p!☑File has no title and has no subs \n'
|
||||
+ '☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
file.ffProbeData.streams[0].width = 1920;
|
||||
file.ffProbeData.streams[0].height = 1080;
|
||||
|
||||
file.meta.Title = undefined;
|
||||
file.container = 'mkv';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is h264 1080p!☑File has no title and has no subs \n'
|
||||
+ '☑File has no title metadata \n'
|
||||
+ '☑File has no subs \n'
|
||||
+ '☑File is in mkv container! \n'
|
||||
+ '☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,94 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: ', -map 0:v',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: 'Removing unwanted audio...\n'
|
||||
+ 'Found unwanted: und: 1\n'
|
||||
+ 'Found unwanted: und: 1\n'
|
||||
+ 'No unwanted audio found!\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: ', -map 0:v -map 0:1',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: false,
|
||||
infoLog: 'Removing unwanted audio...\nAdded undefined: 1\nNo unwanted audio found!\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
languages: 'fre',
|
||||
container: 'mp4',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0:v -map 0:4 -map 0:s? -c copy',
|
||||
container: 'mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Removing unwanted audio...\n'
|
||||
+ 'Found wanted fre: 4\n'
|
||||
+ 'Found unwanted audio\n'
|
||||
+ 'It will be removed\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
languages: 'eng',
|
||||
container: 'mp4',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0:v -map 0:1 -map 0:2 -map 0:3 -map 0:5 -map 0:s? -c copy',
|
||||
container: 'mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Removing unwanted audio...\n'
|
||||
+ 'Found wanted eng: 1\n'
|
||||
+ 'Found wanted eng: 2\n'
|
||||
+ 'Found wanted eng: 3\n'
|
||||
+ 'Found wanted eng: 5\n'
|
||||
+ 'Found unwanted audio\n'
|
||||
+ 'It will be removed\n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☒File is not a 4K video \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.video_resolution = '4KUHD';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-sn -map 0 -c copy',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File does not have only AC3 track commentaries! \n'
|
||||
+ '☑File has AC3 track! \n'
|
||||
+ '☒File has subs! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: ', -c copy -map 0:v ',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☒File is not mkv \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: ', -c copy -map 0:v -map 0:a:0? -c:a:0 copy -map 0:a:1? -c:a:1 copy -map 0:a:2? -c:a:2 copy -map 0:a:3? -c:a:3 copy -map 0:a:4? -c:a:4 copy ',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: "☑File doesn't contain audio tracks with the specified codec.\n",
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
input_codecs: 'aac',
|
||||
output_codec: 'eac3',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -c copy -map 0:v -map 0:a:0? -c:a:0 copy -map 0:a:1? -c:a:1 copy -map 0:a:2? -c:a:2 copy -map 0:a:3? -c:a:3 copy -map 0:a:3? -c:a:4 eac3 -b:a:4 128k -metadata:s:a:4 title="" -metadata:s:a:4 copyright="henk_asac" -disposition:a:4 0 -map 0:a:4? -c:a:5 copy -map 0:a:4? -c:a:6 eac3 -b:a:6 128k -metadata:s:a:6 title="" -metadata:s:a:6 copyright="henk_asac" -disposition:a:6 0 -map 0:s? ',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {
|
||||
input_codecs: 'aac',
|
||||
output_codec: 'eac3',
|
||||
bitrate: '256',
|
||||
auto_adjust: 'false',
|
||||
position_new_audio: 'before',
|
||||
},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -c copy -map 0:v -map 0:a:0? -c:a:0 copy -map 0:a:1? -c:a:1 copy -map 0:a:2? -c:a:2 copy -map 0:a:3? -c:a:3 eac3 -b:a:3 256k -metadata:s:a:3 title="" -metadata:s:a:3 copyright="henk_asac" -disposition:a:3 0 -map 0:a:3? -c:a:4 copy -map 0:a:4? -c:a:5 eac3 -b:a:5 256k -metadata:s:a:5 title="" -metadata:s:a:5 copyright="henk_asac" -disposition:a:5 0 -map 0:a:4? -c:a:6 copy -map 0:s? ',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -c:v copy -c:a copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -c:v copy -c:a copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File has no title metadata \n'
|
||||
+ '☑File has no subs \n'
|
||||
+ '☒File is not in mp4 container! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH265_1.json'));
|
||||
file.container = 'mp4';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File has no title metadata \n'
|
||||
+ '☑File has no subs \n'
|
||||
+ '☑File is in mp4 container! \n'
|
||||
+ '☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is in mp4 container! \n☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ', -map 0 -c copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File is not in mp4 container! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH265_1.json'));
|
||||
file.container = 'mp4';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is in mp4 container! \n'
|
||||
+ '☑File has no title metadata \n'
|
||||
+ '☑File has aac track \n'
|
||||
+ '☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-sn <io> -vcodec copy -scodec copy -acodec aac -filter:a "dynaudnorm,pan=stereo|FL < 1.0*FL + 0.707*FC + 0.707*BL|FR < 1.0*FR + 0.707*FC + 0.707*BR"',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File matches requirements for processing. Downmixing and applying DRC!',
|
||||
container: '.mp4',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_2.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'File has more than 1 audio track - not processing',
|
||||
container: '.mkv',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: 'File has video in first stream\n File meets conditions!\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_1.json'));
|
||||
|
||||
const audio = file.ffProbeData.streams[1];
|
||||
// eslint-disable-next-line prefer-destructuring
|
||||
file.ffProbeData.streams[1] = file.ffProbeData.streams[0];
|
||||
file.ffProbeData.streams[0] = audio;
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v? -map 0:a? -map 0:s? -map 0:d? -map 0:t? -c copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: 'Video is not in the first stream',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map_metadata -1 -map 0 -c copy',
|
||||
container: '.mp4',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File has title metadata \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File has no title metadata \n☑File meets conditions! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0 -c:s copy -movflags use_metadata_tags -c:a aac -b:a 512k -c:v:0 libx265 -preset medium -x265-params crf=18:tune=animation:qcomp=0.7:aq-strength=1.1 -pix_fmt yuv420p10le -f matroska',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n'
|
||||
+ '☒File is 720p but is not hevc!\n'
|
||||
+ '☒File will be transcoded!\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n☑File is already in hevc! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:s? -c:s srt -map 0:a -c copy -c:v:0 libx265 -preset fast -crf 25',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n'
|
||||
+ '☒File is 720p but is not hevc!\n'
|
||||
+ '☒File will be transcoded!\n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n☑File is already in hevc! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH264_2.json'));
|
||||
file.video_resolution = '480p';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:s? -c:s srt -map 0:a -c copy -c:v:0 libx265 -preset fast -crf 27',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☑File is a video! \n'
|
||||
+ '☒File is 480p but is not hevc!\n'
|
||||
+ '☒File will be transcoded!\n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
/* eslint max-len: 0 */
|
||||
const _ = require('lodash');
|
||||
const run = require('../helpers/run');
|
||||
|
||||
const tests = [
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH264_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: '-Z "H.265 MKV 2160p60" --all-audio --all-subtitles',
|
||||
container: '.mkv',
|
||||
handBrakeMode: true,
|
||||
FFmpegMode: false,
|
||||
reQueueAfter: true,
|
||||
infoLog: "☒File isn't in hevc! \n",
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: _.cloneDeep(require('../sampleData/media/sampleH265_1.json')),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: true,
|
||||
preset: ',-map 0:v -map 0:a:0 -map 0:a -map 0:s? -map 0:d? -c copy -c:a:0 ac3 -b:a:0 192k -ac 2',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: true,
|
||||
infoLog: '☒File has no language track in ac3,eac3,dts. No eng track marked so transcoding audio track 1 into ac3! \n',
|
||||
},
|
||||
},
|
||||
{
|
||||
input: {
|
||||
file: (() => {
|
||||
const file = _.cloneDeep(require('../sampleData/media/sampleH265_1.json'));
|
||||
file.ffProbeData.streams[1].codec_name = 'ac3';
|
||||
return file;
|
||||
})(),
|
||||
librarySettings: {},
|
||||
inputs: {},
|
||||
otherArguments: {},
|
||||
},
|
||||
output: {
|
||||
processFile: false,
|
||||
preset: '',
|
||||
container: '.mkv',
|
||||
handBrakeMode: false,
|
||||
FFmpegMode: true,
|
||||
reQueueAfter: false,
|
||||
infoLog: '☑File is in mkv container! \n',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
run(tests);
|
||||
|
|
@ -1,16 +1,12 @@
|
|||
/* eslint no-console: 0 */ // --> OFF
|
||||
/* eslint max-len: 0 */
|
||||
|
||||
const fs = require('fs');
|
||||
const chalk = require('chalk');
|
||||
|
||||
const folders = [
|
||||
'./Community',
|
||||
'./examples',
|
||||
];
|
||||
|
||||
let errorEncountered = false;
|
||||
|
||||
folders.forEach((folder) => {
|
||||
const files = fs.readdirSync(folder).filter((row) => row.includes('.js'));
|
||||
|
||||
|
|
@ -32,16 +28,16 @@ folders.forEach((folder) => {
|
|||
|
||||
const importLib = 'const lib = require(\'../methods/lib\')();';
|
||||
if (!read.includes(importLib)) {
|
||||
console.log(chalk.red(`Plugin error: '${folder}/${files[i]}' does not contain ${importLib}`));
|
||||
console.log(`Plugin error: '${folder}/${files[i]}' does not contain ${importLib}`);
|
||||
read = `${importLib}\n${read}`;
|
||||
// fs.writeFileSync(`${folder}/${files[i]}`, read)
|
||||
errorEncountered = true;
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const detailsText = 'const details = () =>';
|
||||
if (!read.includes(detailsText)) {
|
||||
console.log(chalk.red(`Plugin error: '${folder}/${files[i]}' does not contain ${detailsText}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin error: '${folder}/${files[i]}' does not contain ${detailsText}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const syncText = 'const plugin = (file, librarySettings, inputs, otherArguments) => {';
|
||||
|
|
@ -50,27 +46,27 @@ folders.forEach((folder) => {
|
|||
if (!read.includes(syncText)
|
||||
&& !read.includes(asyncText)
|
||||
) {
|
||||
console.log(chalk.red(`Plugin error: '${folder}/${files[i]}' does not contain ${syncText} or ${asyncText}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin error: '${folder}/${files[i]}' does not contain ${syncText} or ${asyncText}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const inputsText = 'inputs = lib.loadDefaultValues(inputs, details);';
|
||||
if (!read.includes(inputsText)
|
||||
) {
|
||||
console.log(chalk.red(`Plugin error: '${folder}/${files[i]}' does not contain ${inputsText}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin error: '${folder}/${files[i]}' does not contain ${inputsText}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const exportText = `module.exports.details = details;
|
||||
module.exports.plugin = plugin;`;
|
||||
|
||||
if (!read.includes(exportText)) {
|
||||
console.log(chalk.red(`Plugin error: '${folder}/${files[i]}' does not contain ${exportText}`));
|
||||
console.log(`Plugin error: '${folder}/${files[i]}' does not contain ${exportText}`);
|
||||
read = read.replace('module.exports.details = details;', '');
|
||||
read = read.replace('module.exports.plugin = plugin;', '');
|
||||
read += `\n${exportText}`;
|
||||
// fs.writeFileSync(`${folder}/${files[i]}`, read)
|
||||
errorEncountered = true;
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// check deps are within functions
|
||||
|
|
@ -84,8 +80,8 @@ module.exports.plugin = plugin;`;
|
|||
const countOpen = allBefore.join(keyWord).split('{').length - 1;
|
||||
const countClose = allBefore.join(keyWord).split('}').length - 1;
|
||||
if (countOpen === countClose) {
|
||||
console.log(chalk.red(`Plugin has requires outside of function '${folder}/${files[i]}'`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin has requires outside of function '${folder}/${files[i]}'`);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -95,66 +91,64 @@ module.exports.plugin = plugin;`;
|
|||
// eslint-disable-next-line import/no-dynamic-require,global-require
|
||||
pluginDetails = require(`.${folder}/${files[i]}`).details();
|
||||
} catch (err) {
|
||||
console.log(chalk.red(err.message));
|
||||
errorEncountered = true;
|
||||
console.log(err.message);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const detailsKeys = Object.keys(pluginDetails);
|
||||
|
||||
// eslint-disable-next-line no-loop-func
|
||||
detailsOrder.forEach((detail) => {
|
||||
if (detailsKeys.indexOf(detail) === -1) {
|
||||
console.log(chalk.red(`Plugin details is missing '${folder}/${files[i]}' : ${detail}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin details is missing '${folder}/${files[i]}' : ${detail}`);
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
// eslint-disable-next-line no-loop-func
|
||||
detailsKeys.forEach((detail, index) => {
|
||||
if (detailsOrder[index] !== detail) {
|
||||
console.log(chalk.red(`Plugin details keys are not in the correct order: '${folder}/${files[i]}' ${detail}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin details keys are not in the correct order: '${folder}/${files[i]}' ${detail}`);
|
||||
process.exit(1);
|
||||
}
|
||||
});
|
||||
|
||||
if (detailsKeys.length < detailsOrder.length) {
|
||||
console.log(chalk.red(`Plugin details are too few '${folder}/${files[i]}'`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin details are too few '${folder}/${files[i]}'`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (!['Pre-processing', 'Post-processing'].includes(pluginDetails.Stage)) {
|
||||
console.log(chalk.red(`Plugin does not have a valid Type'${folder}/${files[i]}'`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin does not have a valid Type'${folder}/${files[i]}'`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (!['Video', 'Audio', 'Subtitle', 'Any'].includes(pluginDetails.Type)) {
|
||||
console.log(chalk.red(`Plugin does not have a valid Type'${folder}/${files[i]}'`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin does not have a valid Type'${folder}/${files[i]}'`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (files[i].split('.js').join('') !== pluginDetails.id) {
|
||||
console.log(chalk.red(`Plugin file name does not match details id'${folder}/${files[i]}'`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin file name does not match details id'${folder}/${files[i]}'`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (!['Transcode', 'Filter'].includes(pluginDetails.Operation)) {
|
||||
console.log(chalk.red(`Plugin does not have a valid Operation '${folder}/${files[i]}'`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin does not have a valid Operation '${folder}/${files[i]}'`);
|
||||
process.exit(1);
|
||||
} else if (detailsKeys.length > detailsOrder.length) {
|
||||
console.log(chalk.red(`Plugin details are too many '${folder}/${files[i]}'`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin details are too many '${folder}/${files[i]}'`);
|
||||
process.exit(1);
|
||||
} else if (pluginDetails.Inputs && !Array.isArray(pluginDetails.Inputs)) {
|
||||
// Check default values are set;
|
||||
console.log(chalk.red(`Plugin Inputs is not an array: ${files[i]}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin Inputs is not an array: ${files[i]}`);
|
||||
process.exit(1);
|
||||
} else if (pluginDetails.Inputs && Array.isArray(pluginDetails.Inputs)) {
|
||||
const inputs = pluginDetails.Inputs;
|
||||
const savedInputs = {};
|
||||
for (let j = 0; j < inputs.length; j += 1) {
|
||||
// Prevent duplicate plugin inputs
|
||||
if (savedInputs[inputs[j].name] === true) {
|
||||
console.log(chalk.red(`Plugin Input already exists: '${folder}/${files[i]}' : ${inputs[j].name}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin Input already exists: '${folder}/${files[i]}' : ${inputs[j].name}`);
|
||||
process.exit(1);
|
||||
} else {
|
||||
savedInputs[inputs[j].name] = true;
|
||||
}
|
||||
|
|
@ -167,31 +161,31 @@ module.exports.plugin = plugin;`;
|
|||
|| inputKeys[3] !== 'inputUI'
|
||||
|| inputKeys[4] !== 'tooltip'
|
||||
) {
|
||||
console.log(chalk.red(`Plugin Input keys are not in correct order: '${folder}/${files[i]}' : ${inputs[j].name}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin Input keys are not in correct order: '${folder}/${files[i]}' : ${inputs[j].name}`);
|
||||
process.exit(1);
|
||||
} else if (inputs[j].type === undefined || !pluginInputTypes.includes(inputs[j].type)) {
|
||||
console.log(chalk.red(`Plugin Input does not have a type: '${folder}/${files[i]}' : ${inputs[j].name}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin Input does not have a type: '${folder}/${files[i]}' : ${inputs[j].name}`);
|
||||
process.exit(1);
|
||||
} else if (
|
||||
(inputs[j].type === 'string' && typeof inputs[j].defaultValue !== 'string')
|
||||
|| (inputs[j].type === 'number' && typeof inputs[j].defaultValue !== 'number')
|
||||
|| (inputs[j].type === 'boolean' && typeof inputs[j].defaultValue !== 'boolean')
|
||||
) {
|
||||
console.log(chalk.red(`Plugin Input type does not match defaultValue type:
|
||||
'${folder}/${files[i]}' : ${inputs[j].name}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin Input type does not match defaultValue type:
|
||||
'${folder}/${files[i]}' : ${inputs[j].name}`);
|
||||
process.exit(1);
|
||||
} else if (!['text', 'dropdown'].includes(inputs[j].inputUI.type)) {
|
||||
console.log(chalk.red(`Plugin Input inputUI is invalid: '${folder}/${files[i]}' : ${inputs[j].name}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin Input inputUI is invalid: '${folder}/${files[i]}' : ${inputs[j].name}`);
|
||||
process.exit(1);
|
||||
} else if (inputs[j].defaultValue === undefined) {
|
||||
console.log(chalk.red(`Plugin Input does not have a default value: '${folder}/${files[i]}' : ${inputs[j].name}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin Input does not have a default value: '${folder}/${files[i]}' : ${inputs[j].name}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const count = read.split(inputs[j].name).length - 1;
|
||||
if (count === 1) {
|
||||
console.log(chalk.red(`Plugin Input is not used: '${folder}/${files[i]}' : ${inputs[j].name}`));
|
||||
errorEncountered = true;
|
||||
console.log(`Plugin Input is not used: '${folder}/${files[i]}' : ${inputs[j].name}`);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -201,8 +195,3 @@ module.exports.plugin = plugin;`;
|
|||
});
|
||||
|
||||
console.log('Done!');
|
||||
|
||||
if (errorEncountered) {
|
||||
console.log('Errors encountered');
|
||||
process.exit(1);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,55 +0,0 @@
|
|||
const path = require('path');
|
||||
const chai = require('chai');
|
||||
const _ = require('lodash');
|
||||
const importFresh = require('import-fresh');
|
||||
|
||||
const scriptName = path.basename(process.mainModule.filename);
|
||||
|
||||
const run = async (tests) => {
|
||||
try {
|
||||
for (let i = 0; i < tests.length; i += 1) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(`${scriptName}: test ${i}`);
|
||||
const test = tests[i];
|
||||
|
||||
let testOutput;
|
||||
let errorEncountered = false;
|
||||
// eslint-disable-next-line import/no-dynamic-require
|
||||
const { plugin } = importFresh(`../../Community/${scriptName}`);
|
||||
|
||||
try {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
testOutput = await plugin(
|
||||
_.cloneDeep(test.input.file),
|
||||
_.cloneDeep(test.input.librarySettings),
|
||||
_.cloneDeep(test.input.inputs),
|
||||
_.cloneDeep(test.input.otherArguments),
|
||||
);
|
||||
} catch (err1) {
|
||||
errorEncountered = err1;
|
||||
}
|
||||
|
||||
if (test.outputModify) {
|
||||
testOutput = test.outputModify(test.output);
|
||||
}
|
||||
|
||||
if (test.error && test.error.shouldThrow) {
|
||||
if (errorEncountered !== false) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.log(errorEncountered);
|
||||
chai.assert.deepEqual(errorEncountered.message, test.output);
|
||||
} else {
|
||||
throw new Error('Expected plugin error but none was thrown!');
|
||||
}
|
||||
} else {
|
||||
chai.assert.deepEqual(testOutput, test.output);
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = run;
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/* eslint no-console: 0 */ // --> OFF
|
||||
|
||||
const fs = require('fs');
|
||||
const chalk = require('chalk');
|
||||
const childProcess = require('child_process');
|
||||
|
||||
const filenames = fs.readdirSync(`${process.cwd()}/Community`).reverse();
|
||||
|
||||
const run = async () => {
|
||||
for (let i = 0; i < filenames.length; i += 1) {
|
||||
const pluginPath = `${process.cwd()}/Community/${filenames[i]}`;
|
||||
const text = fs.readFileSync(pluginPath);
|
||||
const pluginTestpath = `${__dirname}/Community/${filenames[i]}`;
|
||||
|
||||
let shouldRunTest = true;
|
||||
if (!text.includes('// tdarrSkipTest') && !fs.existsSync(pluginTestpath)) {
|
||||
console.log(chalk.red(`${filenames[i]} does not have a test but should do.`));
|
||||
process.exit(1);
|
||||
} else if (!text.includes('// tdarrSkipTest') && fs.existsSync(pluginTestpath)) {
|
||||
console.log(chalk.white(`${filenames[i]} running test`));
|
||||
} else if (text.includes('// tdarrSkipTest') && fs.existsSync(pluginTestpath)) {
|
||||
console.log(chalk.red(`${filenames[i]} should have // tdarrSkipTest removed`));
|
||||
process.exit(1);
|
||||
} else if (text.includes('// tdarrSkipTest') && !fs.existsSync(pluginTestpath)) {
|
||||
console.log(chalk.yellow(`${filenames[i]} skipping tests`));
|
||||
shouldRunTest = false;
|
||||
}
|
||||
|
||||
if (shouldRunTest) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await new Promise((resolve) => {
|
||||
childProcess.exec(`node "${pluginTestpath}"`, (err, stdout, stderr) => {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
}
|
||||
console.log(stdout);
|
||||
console.log(chalk.red(stderr));
|
||||
}).on('exit', async (code) => {
|
||||
if (code !== 0) {
|
||||
await new Promise((resolve2) => setTimeout(resolve2, 1000));
|
||||
process.exit(1);
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
run();
|
||||
|
|
@ -1,334 +0,0 @@
|
|||
{
|
||||
"_id": "C:/Transcode/Source Folder/qsv_h265.mkv",
|
||||
"file": "C:/Transcode/Source Folder/qsv_h265.mkv",
|
||||
"DB": "2MY5YD7P8",
|
||||
"footprintId": "xkZP3IPR6g",
|
||||
"hasClosedCaptions": false,
|
||||
"container": "mkv",
|
||||
"scannerReads": {
|
||||
"ffProbeRead": "success",
|
||||
"exiftoolRead": "success",
|
||||
"mediaInfoRead": "success",
|
||||
"closedCaptionRead": "\"Unable to run CCExtractor\""
|
||||
},
|
||||
"ffProbeData": {
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "hevc",
|
||||
"codec_long_name": "H.265 / HEVC (High Efficiency Video Coding)",
|
||||
"profile": "Main",
|
||||
"codec_type": "video",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"coded_width": 1920,
|
||||
"coded_height": 1088,
|
||||
"closed_captions": 0,
|
||||
"has_b_frames": 1,
|
||||
"sample_aspect_ratio": "1:1",
|
||||
"display_aspect_ratio": "16:9",
|
||||
"pix_fmt": "yuv420p",
|
||||
"level": 150,
|
||||
"color_range": "tv",
|
||||
"color_space": "bt709",
|
||||
"color_transfer": "bt709",
|
||||
"color_primaries": "bt709",
|
||||
"chroma_location": "left",
|
||||
"refs": 1,
|
||||
"r_frame_rate": "25/1",
|
||||
"avg_frame_rate": "25/1",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 21,
|
||||
"start_time": "0.021000",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"DURATION": "00:00:21.341000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "aac",
|
||||
"codec_long_name": "AAC (Advanced Audio Coding)",
|
||||
"profile": "LC",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"title": "Stereo",
|
||||
"DURATION": "00:00:21.375000000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"filename": "C:/Transcode/Source Folder/qsv_h265.mkv",
|
||||
"nb_streams": 2,
|
||||
"nb_programs": 0,
|
||||
"format_name": "matroska,webm",
|
||||
"format_long_name": "Matroska / WebM",
|
||||
"start_time": "0.000000",
|
||||
"duration": "21.375000",
|
||||
"size": "8569883",
|
||||
"bit_rate": "3207441",
|
||||
"probe_score": 100,
|
||||
"tags": {
|
||||
"creation_time": "2019-09-13T16:46:14.000000Z",
|
||||
"ENCODER": "Lavf58.20.100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_size": 8.172877311706543,
|
||||
"video_resolution": "1080p",
|
||||
"fileMedium": "video",
|
||||
"video_codec_name": "hevc",
|
||||
"audio_codec_name": "",
|
||||
"lastPluginDetails": "none",
|
||||
"createdAt": 1653029410394,
|
||||
"bit_rate": 3207441,
|
||||
"duration": 21,
|
||||
"statSync": {
|
||||
"dev": 3832468976,
|
||||
"mode": 33060,
|
||||
"nlink": 1,
|
||||
"uid": 0,
|
||||
"gid": 0,
|
||||
"rdev": 0,
|
||||
"blksize": 4096,
|
||||
"ino": 1970324841360027,
|
||||
"size": 8569883,
|
||||
"blocks": 16744,
|
||||
"atimeMs": 1653029410381.1382,
|
||||
"mtimeMs": 1568393195000,
|
||||
"ctimeMs": 1650864287188.087,
|
||||
"birthtimeMs": 1650864302270.2063,
|
||||
"atime": "2022-05-20T06:50:10.381Z",
|
||||
"mtime": "2019-09-13T16:46:35.000Z",
|
||||
"ctime": "2022-04-25T05:24:47.188Z",
|
||||
"birthtime": "2022-04-25T05:25:02.270Z"
|
||||
},
|
||||
"HealthCheck": "",
|
||||
"TranscodeDecisionMaker": "",
|
||||
"lastHealthCheckDate": 0,
|
||||
"holdUntil": 0,
|
||||
"lastTranscodeDate": 0,
|
||||
"bumped": false,
|
||||
"history": "",
|
||||
"oldSize": 0,
|
||||
"newSize": 0,
|
||||
"videoStreamIndex": 0,
|
||||
"lastUpdate": 1653027918258,
|
||||
"meta": {
|
||||
"SourceFile": "C:/Transcode/Source Folder/qsv_h265.mkv",
|
||||
"errors": [],
|
||||
"Duration": 21.375,
|
||||
"ExifToolVersion": 12.4,
|
||||
"FileName": "qsv_h265.mkv",
|
||||
"Directory": "C:/Transcode/Source Folder",
|
||||
"FileSize": "8.2 MiB",
|
||||
"FileModifyDate": {
|
||||
"year": 2019,
|
||||
"month": 9,
|
||||
"day": 13,
|
||||
"hour": 17,
|
||||
"minute": 46,
|
||||
"second": 35,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2019:09:13 17:46:35+01:00"
|
||||
},
|
||||
"FileAccessDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 20,
|
||||
"hour": 7,
|
||||
"minute": 50,
|
||||
"second": 9,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:20 07:50:09+01:00"
|
||||
},
|
||||
"FileCreateDate": {
|
||||
"year": 2022,
|
||||
"month": 4,
|
||||
"day": 25,
|
||||
"hour": 6,
|
||||
"minute": 25,
|
||||
"second": 2,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:04:25 06:25:02+01:00"
|
||||
},
|
||||
"FilePermissions": "-r--r--r--",
|
||||
"FileType": "MKV",
|
||||
"FileTypeExtension": "mkv",
|
||||
"MIMEType": "video/x-matroska",
|
||||
"EBMLVersion": 1,
|
||||
"EBMLReadVersion": 1,
|
||||
"DocType": "matroska",
|
||||
"DocTypeVersion": 4,
|
||||
"DocTypeReadVersion": 2,
|
||||
"TimecodeScale": "1 ms",
|
||||
"MuxingApp": "Lavf58.20.100",
|
||||
"WritingApp": "HandBrake 1.2.2 2019022300",
|
||||
"DateTimeOriginal": {
|
||||
"year": 2019,
|
||||
"month": 9,
|
||||
"day": 13,
|
||||
"hour": 16,
|
||||
"minute": 46,
|
||||
"second": 14,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 0,
|
||||
"rawValue": "2019:09:13 16:46:14Z"
|
||||
},
|
||||
"VideoFrameRate": 25,
|
||||
"ImageWidth": 1920,
|
||||
"ImageHeight": 1080,
|
||||
"TrackNumber": 2,
|
||||
"TrackName": "Stereo",
|
||||
"TrackLanguage": "und",
|
||||
"CodecID": "A_AAC",
|
||||
"TrackType": "Audio",
|
||||
"AudioChannels": 2,
|
||||
"AudioSampleRate": 48000,
|
||||
"TagName": "DURATION",
|
||||
"TagString": "00:00:21.375000000",
|
||||
"ImageSize": "1920x1080",
|
||||
"Megapixels": 2.1
|
||||
},
|
||||
"mediaInfo": {
|
||||
"@ref": "",
|
||||
"track": [
|
||||
{
|
||||
"@type": "General",
|
||||
"UniqueID": "112612991515236890937117095733641799622",
|
||||
"VideoCount": "1",
|
||||
"AudioCount": "1",
|
||||
"Format": "Matroska",
|
||||
"Format_Version": "4",
|
||||
"FileSize": "8569883",
|
||||
"Duration": "21.375",
|
||||
"OverallBitRate": "3207442",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "533",
|
||||
"IsStreamable": "Yes",
|
||||
"Encoded_Date": "UTC 2019-09-13 16:46:14",
|
||||
"Encoded_Application": "HandBrake 1.2.2 2019022300",
|
||||
"Encoded_Library": "Lavf58.20.100",
|
||||
"extra": {
|
||||
"ErrorDetectionType": "Per level 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Video",
|
||||
"StreamOrder": "0",
|
||||
"ID": "1",
|
||||
"UniqueID": "1",
|
||||
"Format": "HEVC",
|
||||
"Format_Profile": "Main",
|
||||
"Format_Level": "5",
|
||||
"Format_Tier": "Main",
|
||||
"CodecID": "V_MPEGH/ISO/HEVC",
|
||||
"Duration": "21.320000000",
|
||||
"Width": "1920",
|
||||
"Height": "1080",
|
||||
"Stored_Height": "1088",
|
||||
"Sampled_Width": "1920",
|
||||
"Sampled_Height": "1080",
|
||||
"PixelAspectRatio": "1.000",
|
||||
"DisplayAspectRatio": "1.778",
|
||||
"FrameRate_Mode": "CFR",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "533",
|
||||
"ColorSpace": "YUV",
|
||||
"ChromaSubsampling": "4:2:0",
|
||||
"BitDepth": "8",
|
||||
"Delay": "0.021",
|
||||
"Default": "Yes",
|
||||
"Forced": "No",
|
||||
"colour_description_present": "Yes",
|
||||
"colour_description_present_Source": "Stream",
|
||||
"colour_range": "Limited",
|
||||
"colour_range_Source": "Stream",
|
||||
"colour_primaries": "BT.709",
|
||||
"colour_primaries_Source": "Stream",
|
||||
"transfer_characteristics": "BT.709",
|
||||
"transfer_characteristics_Source": "Stream",
|
||||
"matrix_coefficients": "BT.709",
|
||||
"matrix_coefficients_Source": "Stream"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"StreamOrder": "1",
|
||||
"ID": "2",
|
||||
"UniqueID": "2",
|
||||
"Format": "AAC",
|
||||
"Format_Settings_SBR": "No (Explicit)",
|
||||
"Format_AdditionalFeatures": "LC",
|
||||
"CodecID": "A_AAC-2",
|
||||
"Duration": "21.375000000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1024",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "1026000",
|
||||
"FrameRate": "46.875",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.000",
|
||||
"Delay_Source": "Container",
|
||||
"Title": "Stereo",
|
||||
"Default": "Yes",
|
||||
"Forced": "No"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,432 +0,0 @@
|
|||
{
|
||||
"_id": "C:/Transcode/Source Folder/SampleVideo_1280x720_1mb.mp4",
|
||||
"file": "C:/Transcode/Source Folder/SampleVideo_1280x720_1mb.mp4",
|
||||
"DB": "2MY5YD7P8",
|
||||
"footprintId": "KA_y0Hm3Ld",
|
||||
"hasClosedCaptions": false,
|
||||
"container": "mp4",
|
||||
"scannerReads": {
|
||||
"ffProbeRead": "success",
|
||||
"exiftoolRead": "success",
|
||||
"mediaInfoRead": "success",
|
||||
"closedCaptionRead": "\"Unable to run CCExtractor\""
|
||||
},
|
||||
"ffProbeData": {
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "h264",
|
||||
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
|
||||
"profile": "Main",
|
||||
"codec_type": "video",
|
||||
"codec_tag_string": "avc1",
|
||||
"codec_tag": "0x31637661",
|
||||
"width": 1280,
|
||||
"height": 720,
|
||||
"coded_width": 1280,
|
||||
"coded_height": 720,
|
||||
"closed_captions": 0,
|
||||
"has_b_frames": 0,
|
||||
"sample_aspect_ratio": "1:1",
|
||||
"display_aspect_ratio": "16:9",
|
||||
"pix_fmt": "yuv420p",
|
||||
"level": 31,
|
||||
"chroma_location": "left",
|
||||
"refs": 1,
|
||||
"is_avc": "true",
|
||||
"nal_length_size": "4",
|
||||
"r_frame_rate": "25/1",
|
||||
"avg_frame_rate": "25/1",
|
||||
"time_base": "1/12800",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"duration_ts": 67584,
|
||||
"duration": "5.280000",
|
||||
"bit_rate": "1205959",
|
||||
"bits_per_raw_sample": "8",
|
||||
"nb_frames": "132",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"creation_time": "1970-01-01T00:00:00.000000Z",
|
||||
"language": "und",
|
||||
"handler_name": "VideoHandler",
|
||||
"vendor_id": "[0][0][0][0]"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "aac",
|
||||
"codec_long_name": "AAC (Advanced Audio Coding)",
|
||||
"profile": "LC",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "mp4a",
|
||||
"codec_tag": "0x6134706d",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 6,
|
||||
"channel_layout": "5.1",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/48000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"duration_ts": 254976,
|
||||
"duration": "5.312000",
|
||||
"bit_rate": "384828",
|
||||
"nb_frames": "249",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"creation_time": "1970-01-01T00:00:00.000000Z",
|
||||
"language": "und",
|
||||
"handler_name": "SoundHandler",
|
||||
"vendor_id": "[0][0][0][0]"
|
||||
}
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"filename": "C:/Transcode/Source Folder/SampleVideo_1280x720_1mb.mp4",
|
||||
"nb_streams": 2,
|
||||
"nb_programs": 0,
|
||||
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
|
||||
"format_long_name": "QuickTime / MOV",
|
||||
"start_time": "0.000000",
|
||||
"duration": "5.312000",
|
||||
"size": "1056519",
|
||||
"bit_rate": "1591143",
|
||||
"probe_score": 100,
|
||||
"tags": {
|
||||
"major_brand": "isom",
|
||||
"minor_version": "512",
|
||||
"compatible_brands": "isomiso2avc1mp41",
|
||||
"creation_time": "1970-01-08T00:00:00.000000Z",
|
||||
"encoder": "Lavf53.24.2",
|
||||
"title": "Sample title test",
|
||||
"composer": "th",
|
||||
"date": "2018",
|
||||
"genre": "this",
|
||||
"artist": "hhj",
|
||||
"comment": "hhk"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_size": 1.0075750350952148,
|
||||
"video_resolution": "720p",
|
||||
"fileMedium": "video",
|
||||
"video_codec_name": "h264",
|
||||
"audio_codec_name": "",
|
||||
"lastPluginDetails": "none",
|
||||
"createdAt": 1653029288316,
|
||||
"bit_rate": 1591143,
|
||||
"duration": 5,
|
||||
"statSync": {
|
||||
"dev": 3832468976,
|
||||
"mode": 33060,
|
||||
"nlink": 1,
|
||||
"uid": 0,
|
||||
"gid": 0,
|
||||
"rdev": 0,
|
||||
"blksize": 4096,
|
||||
"ino": 1688849864649366,
|
||||
"size": 1056519,
|
||||
"blocks": 2064,
|
||||
"atimeMs": 1653029288299.0342,
|
||||
"mtimeMs": 1569306262000,
|
||||
"ctimeMs": 1650864287160.0793,
|
||||
"birthtimeMs": 1652683715285.7583,
|
||||
"atime": "2022-05-20T06:48:08.299Z",
|
||||
"mtime": "2019-09-24T06:24:22.000Z",
|
||||
"ctime": "2022-04-25T05:24:47.160Z",
|
||||
"birthtime": "2022-05-16T06:48:35.286Z"
|
||||
},
|
||||
"HealthCheck": "",
|
||||
"TranscodeDecisionMaker": "",
|
||||
"lastHealthCheckDate": 0,
|
||||
"holdUntil": 0,
|
||||
"lastTranscodeDate": 0,
|
||||
"bumped": false,
|
||||
"history": "",
|
||||
"oldSize": 0,
|
||||
"newSize": 0,
|
||||
"videoStreamIndex": 0,
|
||||
"lastUpdate": 1653028721083,
|
||||
"meta": {
|
||||
"SourceFile": "C:/Transcode/Source Folder/SampleVideo_1280x720_1mb.mp4",
|
||||
"errors": [],
|
||||
"Duration": 5.312,
|
||||
"PreviewDuration": 0,
|
||||
"SelectionDuration": 0,
|
||||
"TrackDuration": 5.28,
|
||||
"MediaDuration": 5.28,
|
||||
"ExifToolVersion": 12.4,
|
||||
"FileName": "SampleVideo_1280x720_1mb.mp4",
|
||||
"Directory": "C:/Transcode/Source Folder",
|
||||
"FileSize": "1032 KiB",
|
||||
"FileModifyDate": {
|
||||
"year": 2019,
|
||||
"month": 9,
|
||||
"day": 24,
|
||||
"hour": 7,
|
||||
"minute": 24,
|
||||
"second": 22,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2019:09:24 07:24:22+01:00"
|
||||
},
|
||||
"FileAccessDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 20,
|
||||
"hour": 7,
|
||||
"minute": 48,
|
||||
"second": 6,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:20 07:48:06+01:00"
|
||||
},
|
||||
"FileCreateDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 16,
|
||||
"hour": 7,
|
||||
"minute": 48,
|
||||
"second": 35,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:16 07:48:35+01:00"
|
||||
},
|
||||
"FilePermissions": "-r--r--r--",
|
||||
"FileType": "MP4",
|
||||
"FileTypeExtension": "mp4",
|
||||
"MIMEType": "video/mp4",
|
||||
"MajorBrand": "MP4 Base Media v1 [IS0 14496-12:2003]",
|
||||
"MinorVersion": "0.2.0",
|
||||
"CompatibleBrands": [
|
||||
"isom",
|
||||
"iso2",
|
||||
"avc1",
|
||||
"mp41"
|
||||
],
|
||||
"MediaDataSize": 0,
|
||||
"MediaDataOffset": 1051515,
|
||||
"MovieHeaderVersion": 0,
|
||||
"CreateDate": {
|
||||
"year": 1970,
|
||||
"month": 1,
|
||||
"day": 8,
|
||||
"hour": 0,
|
||||
"minute": 0,
|
||||
"second": 0,
|
||||
"millisecond": 0,
|
||||
"rawValue": "1970:01:08 00:00:00"
|
||||
},
|
||||
"ModifyDate": {
|
||||
"year": 2014,
|
||||
"month": 7,
|
||||
"day": 19,
|
||||
"hour": 17,
|
||||
"minute": 15,
|
||||
"second": 29,
|
||||
"millisecond": 0,
|
||||
"rawValue": "2014:07:19 17:15:29"
|
||||
},
|
||||
"TimeScale": 1000,
|
||||
"PreferredRate": 1,
|
||||
"PreferredVolume": "100.00%",
|
||||
"PreviewTime": "0 s",
|
||||
"PosterTime": "0 s",
|
||||
"SelectionTime": "0 s",
|
||||
"CurrentTime": "0 s",
|
||||
"NextTrackID": 3,
|
||||
"TrackHeaderVersion": 0,
|
||||
"TrackCreateDate": "0000:00:00 00:00:00",
|
||||
"TrackModifyDate": "0000:00:00 00:00:00",
|
||||
"TrackID": 1,
|
||||
"TrackLayer": 0,
|
||||
"TrackVolume": "0.00%",
|
||||
"ImageWidth": 1280,
|
||||
"ImageHeight": 720,
|
||||
"GraphicsMode": "srcCopy",
|
||||
"OpColor": "0 0 0",
|
||||
"CompressorID": "avc1",
|
||||
"SourceImageWidth": 1280,
|
||||
"SourceImageHeight": 720,
|
||||
"XResolution": 72,
|
||||
"YResolution": 72,
|
||||
"BitDepth": 24,
|
||||
"VideoFrameRate": 25,
|
||||
"MatrixStructure": "1 0 0 0 1 0 0 0 1",
|
||||
"MediaHeaderVersion": 0,
|
||||
"MediaCreateDate": "0000:00:00 00:00:00",
|
||||
"MediaModifyDate": "0000:00:00 00:00:00",
|
||||
"MediaTimeScale": 48000,
|
||||
"MediaLanguageCode": "und",
|
||||
"HandlerDescription": "SoundHandler",
|
||||
"Balance": 0,
|
||||
"AudioFormat": "mp4a",
|
||||
"AudioChannels": 2,
|
||||
"AudioBitsPerSample": 16,
|
||||
"AudioSampleRate": 48000,
|
||||
"HandlerType": "Metadata",
|
||||
"HandlerVendorID": "Apple",
|
||||
"Encoder": "Lavf53.24.2",
|
||||
"Title": "Sample title test",
|
||||
"Composer": "th",
|
||||
"BeatsPerMinute": 0,
|
||||
"ContentCreateDate": 2018,
|
||||
"Genre": "this",
|
||||
"Artist": "hhj",
|
||||
"Comment": "hhk",
|
||||
"Subtitle": "jj",
|
||||
"Mood": "lik",
|
||||
"ContentDistributor": "cont",
|
||||
"Conductor": "jo",
|
||||
"Writer": "writ",
|
||||
"InitialKey": "ho",
|
||||
"Producer": "prod",
|
||||
"ParentalRating": "par",
|
||||
"Director": "dir",
|
||||
"Period": "pol",
|
||||
"Publisher": "pub",
|
||||
"PromotionURL": "prom",
|
||||
"AuthorURL": "auth",
|
||||
"EncodedBy": "enc",
|
||||
"Category": "h",
|
||||
"ImageSize": "1280x720",
|
||||
"Megapixels": 0.922,
|
||||
"AvgBitrate": "1.58 Mbps",
|
||||
"Rotation": 0
|
||||
},
|
||||
"mediaInfo": {
|
||||
"@ref": "",
|
||||
"track": [
|
||||
{
|
||||
"@type": "General",
|
||||
"VideoCount": "1",
|
||||
"AudioCount": "1",
|
||||
"Format": "MPEG-4",
|
||||
"Format_Profile": "Base Media",
|
||||
"CodecID": "isom",
|
||||
"CodecID_Compatible": "isom/iso2/avc1/mp41",
|
||||
"FileSize": "1056519",
|
||||
"Duration": "5.312",
|
||||
"OverallBitRate_Mode": "VBR",
|
||||
"OverallBitRate": "1591143",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "132",
|
||||
"StreamSize": "5060",
|
||||
"HeaderSize": "40",
|
||||
"DataSize": "1051467",
|
||||
"FooterSize": "5012",
|
||||
"IsStreamable": "No",
|
||||
"Title": "Sample title test",
|
||||
"Movie": "Sample title test",
|
||||
"Performer": "hhj",
|
||||
"Composer": "th",
|
||||
"Genre": "this",
|
||||
"Recorded_Date": "2018",
|
||||
"Encoded_Date": "UTC 1970-01-08 00:00:00",
|
||||
"Tagged_Date": "UTC 2014-07-19 17:15:29",
|
||||
"Encoded_Application": "Lavf53.24.2",
|
||||
"Comment": "hhk"
|
||||
},
|
||||
{
|
||||
"@type": "Video",
|
||||
"StreamOrder": "0",
|
||||
"ID": "1",
|
||||
"Format": "AVC",
|
||||
"Format_Profile": "Main",
|
||||
"Format_Level": "3.1",
|
||||
"Format_Settings_CABAC": "Yes",
|
||||
"Format_Settings_RefFrames": "1",
|
||||
"CodecID": "avc1",
|
||||
"Duration": "5.280",
|
||||
"BitRate": "1205959",
|
||||
"Width": "1280",
|
||||
"Height": "720",
|
||||
"Sampled_Width": "1280",
|
||||
"Sampled_Height": "720",
|
||||
"PixelAspectRatio": "1.000",
|
||||
"DisplayAspectRatio": "1.778",
|
||||
"Rotation": "0.000",
|
||||
"FrameRate_Mode": "CFR",
|
||||
"FrameRate_Mode_Original": "VFR",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "132",
|
||||
"ColorSpace": "YUV",
|
||||
"ChromaSubsampling": "4:2:0",
|
||||
"BitDepth": "8",
|
||||
"ScanType": "Progressive",
|
||||
"StreamSize": "795933",
|
||||
"Encoded_Date": "UTC 1970-01-01 00:00:00",
|
||||
"Tagged_Date": "UTC 1970-01-01 00:00:00",
|
||||
"extra": {
|
||||
"CodecConfigurationBox": "avcC"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"StreamOrder": "1",
|
||||
"ID": "2",
|
||||
"Format": "AAC",
|
||||
"Format_AdditionalFeatures": "LC",
|
||||
"CodecID": "mp4a-40-2",
|
||||
"Duration": "5.312",
|
||||
"BitRate_Mode": "VBR",
|
||||
"BitRate": "384000",
|
||||
"BitRate_Maximum": "400392",
|
||||
"Channels": "6",
|
||||
"ChannelPositions": "Front: L C R, Side: L R, LFE",
|
||||
"ChannelLayout": "C L R Ls Rs LFE",
|
||||
"SamplesPerFrame": "1024",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "254976",
|
||||
"FrameRate": "46.875",
|
||||
"FrameCount": "249",
|
||||
"Compression_Mode": "Lossy",
|
||||
"StreamSize": "255526",
|
||||
"StreamSize_Proportion": "0.24186",
|
||||
"Default": "Yes",
|
||||
"AlternateGroup": "1",
|
||||
"Encoded_Date": "UTC 1970-01-01 00:00:00",
|
||||
"Tagged_Date": "UTC 1970-01-01 00:00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,775 +0,0 @@
|
|||
{
|
||||
"_id": "C:/Transcode/Source Folder/h264.mkv",
|
||||
"file": "C:/Transcode/Source Folder/h264.mkv",
|
||||
"DB": "2MY5YD7P8",
|
||||
"footprintId": "asxmr-5Iij",
|
||||
"hasClosedCaptions": false,
|
||||
"container": "mkv",
|
||||
"scannerReads": {
|
||||
"ffProbeRead": "success",
|
||||
"exiftoolRead": "success",
|
||||
"mediaInfoRead": "success",
|
||||
"closedCaptionRead": "success"
|
||||
},
|
||||
"ffProbeData": {
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "h264",
|
||||
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
|
||||
"profile": "High",
|
||||
"codec_type": "video",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"width": 1918,
|
||||
"height": 1080,
|
||||
"coded_width": 1918,
|
||||
"coded_height": 1080,
|
||||
"closed_captions": 0,
|
||||
"has_b_frames": 2,
|
||||
"sample_aspect_ratio": "1:1",
|
||||
"display_aspect_ratio": "959:540",
|
||||
"pix_fmt": "yuv420p",
|
||||
"level": 41,
|
||||
"color_range": "tv",
|
||||
"color_space": "bt709",
|
||||
"chroma_location": "left",
|
||||
"field_order": "progressive",
|
||||
"refs": 1,
|
||||
"is_avc": "true",
|
||||
"nal_length_size": "4",
|
||||
"r_frame_rate": "25/1",
|
||||
"avg_frame_rate": "25/1",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"bits_per_raw_sample": "8",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "fre",
|
||||
"title": "title video",
|
||||
"BPS-eng": "6453995",
|
||||
"DURATION-eng": "00:01:03.960000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1599",
|
||||
"NUMBER_OF_BYTES-eng": "51599695",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"DURATION": "00:01:03.986000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "flac",
|
||||
"codec_long_name": "FLAC (Free Lossless Audio Codec)",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "s32",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 5,
|
||||
"start_time": "0.005000",
|
||||
"bits_per_raw_sample": "24",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "eng",
|
||||
"title": "Anglais E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 flac",
|
||||
"DURATION": "00:01:04.005000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"codec_name": "ac3",
|
||||
"codec_long_name": "ATSC A/52A (AC-3)",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"bit_rate": "192000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "eng",
|
||||
"title": "Anglais E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 ac3",
|
||||
"DURATION": "00:01:04.000000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"codec_name": "eac3",
|
||||
"codec_long_name": "ATSC A/52B (AC-3, E-AC-3)",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"bit_rate": "192000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "eng",
|
||||
"title": "Anglais E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 eac3",
|
||||
"DURATION": "00:01:04.000000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"codec_name": "aac",
|
||||
"codec_long_name": "AAC (Advanced Audio Coding)",
|
||||
"profile": "LC",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 5,
|
||||
"start_time": "0.005000",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "fre",
|
||||
"title": "Français E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 aac",
|
||||
"DURATION": "00:01:04.004000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"codec_name": "aac",
|
||||
"codec_long_name": "AAC (Advanced Audio Coding)",
|
||||
"profile": "LC",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 5,
|
||||
"start_time": "0.005000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "eng",
|
||||
"title": "Anglais E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 aac",
|
||||
"DURATION": "00:01:04.004000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 6,
|
||||
"codec_name": "subrip",
|
||||
"codec_long_name": "SubRip subtitle",
|
||||
"codec_type": "subtitle",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"duration_ts": 66031,
|
||||
"duration": "66.031000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "fre",
|
||||
"title": "Français",
|
||||
"BPS-eng": "46",
|
||||
"DURATION-eng": "00:01:05.840000000",
|
||||
"NUMBER_OF_FRAMES-eng": "12",
|
||||
"NUMBER_OF_BYTES-eng": "381",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"DURATION": "00:01:06.031000000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"filename": "C:/Transcode/Source Folder/h264.mkv",
|
||||
"nb_streams": 7,
|
||||
"nb_programs": 0,
|
||||
"format_name": "matroska,webm",
|
||||
"format_long_name": "Matroska / WebM",
|
||||
"start_time": "0.000000",
|
||||
"duration": "66.031000",
|
||||
"size": "68084120",
|
||||
"bit_rate": "8248746",
|
||||
"probe_score": 100,
|
||||
"tags": {
|
||||
"ENCODER": "Lavf58.24.101"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_size": 64.9300765991211,
|
||||
"video_resolution": "1080p",
|
||||
"fileMedium": "video",
|
||||
"video_codec_name": "h264",
|
||||
"audio_codec_name": "",
|
||||
"lastPluginDetails": "none",
|
||||
"createdAt": 1653139154025,
|
||||
"bit_rate": 8248746,
|
||||
"duration": 66,
|
||||
"statSync": {
|
||||
"dev": 3832468976,
|
||||
"mode": 33206,
|
||||
"nlink": 1,
|
||||
"uid": 0,
|
||||
"gid": 0,
|
||||
"rdev": 0,
|
||||
"blksize": 4096,
|
||||
"ino": 64176294690080990,
|
||||
"size": 68084120,
|
||||
"blocks": 132984,
|
||||
"atimeMs": 1653139154001.7666,
|
||||
"mtimeMs": 1594420078270.8928,
|
||||
"ctimeMs": 1653139134390.225,
|
||||
"birthtimeMs": 1653139123219.1018,
|
||||
"atime": "2022-05-21T13:19:14.002Z",
|
||||
"mtime": "2020-07-10T22:27:58.271Z",
|
||||
"ctime": "2022-05-21T13:18:54.390Z",
|
||||
"birthtime": "2022-05-21T13:18:43.219Z"
|
||||
},
|
||||
"HealthCheck": "",
|
||||
"TranscodeDecisionMaker": "",
|
||||
"lastHealthCheckDate": 0,
|
||||
"holdUntil": 0,
|
||||
"lastTranscodeDate": 0,
|
||||
"bumped": false,
|
||||
"history": "",
|
||||
"oldSize": 0,
|
||||
"newSize": 0,
|
||||
"videoStreamIndex": 0,
|
||||
"meta": {
|
||||
"SourceFile": "C:/Transcode/Source Folder/h264.mkv",
|
||||
"errors": [],
|
||||
"Duration": 66.031,
|
||||
"ExifToolVersion": 12.4,
|
||||
"FileName": "h264.mkv",
|
||||
"Directory": "C:/Transcode/Source Folder",
|
||||
"FileSize": "65 MiB",
|
||||
"FileModifyDate": {
|
||||
"year": 2020,
|
||||
"month": 7,
|
||||
"day": 10,
|
||||
"hour": 23,
|
||||
"minute": 27,
|
||||
"second": 58,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2020:07:10 23:27:58+01:00"
|
||||
},
|
||||
"FileAccessDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 21,
|
||||
"hour": 14,
|
||||
"minute": 19,
|
||||
"second": 11,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:21 14:19:11+01:00"
|
||||
},
|
||||
"FileCreateDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 21,
|
||||
"hour": 14,
|
||||
"minute": 18,
|
||||
"second": 43,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:21 14:18:43+01:00"
|
||||
},
|
||||
"FilePermissions": "-rw-rw-rw-",
|
||||
"FileType": "MKV",
|
||||
"FileTypeExtension": "mkv",
|
||||
"MIMEType": "video/x-matroska",
|
||||
"EBMLVersion": 1,
|
||||
"EBMLReadVersion": 1,
|
||||
"DocType": "matroska",
|
||||
"DocTypeVersion": 4,
|
||||
"DocTypeReadVersion": 2,
|
||||
"TimecodeScale": "1 ms",
|
||||
"MuxingApp": "Lavf58.24.101",
|
||||
"WritingApp": "Lavf58.24.101",
|
||||
"VideoFrameRate": 25,
|
||||
"ImageWidth": 1918,
|
||||
"ImageHeight": 1080,
|
||||
"VideoScanType": "Unknown (2)",
|
||||
"AudioChannels": 2,
|
||||
"AudioSampleRate": 48000,
|
||||
"AudioBitsPerSample": 32,
|
||||
"TrackNumber": 7,
|
||||
"TrackName": "Français",
|
||||
"TrackLanguage": "fre",
|
||||
"TrackDefault": "No",
|
||||
"CodecID": "S_TEXT/UTF8",
|
||||
"TrackType": "Subtitle",
|
||||
"TagLanguage": "eng",
|
||||
"TagName": "DURATION",
|
||||
"TagString": "00:01:06.031000000",
|
||||
"ImageSize": "1918x1080",
|
||||
"Megapixels": 2.1
|
||||
},
|
||||
"mediaInfo": {
|
||||
"@ref": "",
|
||||
"track": [
|
||||
{
|
||||
"@type": "General",
|
||||
"UniqueID": "191657682055212276795239999260924509108",
|
||||
"VideoCount": "1",
|
||||
"AudioCount": "5",
|
||||
"TextCount": "1",
|
||||
"Format": "Matroska",
|
||||
"Format_Version": "4",
|
||||
"FileSize": "68084120",
|
||||
"Duration": "66.031",
|
||||
"OverallBitRate_Mode": "VBR",
|
||||
"OverallBitRate": "8248746",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "1599",
|
||||
"StreamSize": "12645964",
|
||||
"IsStreamable": "Yes",
|
||||
"Encoded_Application": "Lavf58.24.101",
|
||||
"Encoded_Library": "Lavf58.24.101",
|
||||
"extra": {
|
||||
"ErrorDetectionType": "Per level 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Video",
|
||||
"StreamOrder": "0",
|
||||
"ID": "1",
|
||||
"UniqueID": "1",
|
||||
"Format": "AVC",
|
||||
"Format_Profile": "High",
|
||||
"Format_Level": "4.1",
|
||||
"Format_Settings_CABAC": "Yes",
|
||||
"Format_Settings_RefFrames": "4",
|
||||
"CodecID": "V_MPEG4/ISO/AVC",
|
||||
"Duration": "63.986000000",
|
||||
"BitRate": "6453995",
|
||||
"Width": "1918",
|
||||
"Height": "1080",
|
||||
"Stored_Width": "1920",
|
||||
"Stored_Height": "1088",
|
||||
"Sampled_Width": "1918",
|
||||
"Sampled_Height": "1080",
|
||||
"PixelAspectRatio": "1.000",
|
||||
"DisplayAspectRatio": "1.776",
|
||||
"FrameRate_Mode": "VFR",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "1599",
|
||||
"ColorSpace": "YUV",
|
||||
"ChromaSubsampling": "4:2:0",
|
||||
"BitDepth": "8",
|
||||
"ScanType": "Progressive",
|
||||
"Delay": "0.000",
|
||||
"StreamSize": "51599695",
|
||||
"Title": "title video",
|
||||
"Language": "fr",
|
||||
"Default": "Yes",
|
||||
"Forced": "No",
|
||||
"colour_description_present": "Yes",
|
||||
"colour_description_present_Source": "Container / Stream",
|
||||
"colour_range": "Limited",
|
||||
"colour_range_Source": "Container / Stream",
|
||||
"colour_primaries_Source": "Stream",
|
||||
"transfer_characteristics_Source": "Stream",
|
||||
"matrix_coefficients": "BT.709",
|
||||
"matrix_coefficients_Source": "Container / Stream"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "1",
|
||||
"StreamOrder": "1",
|
||||
"ID": "2",
|
||||
"UniqueID": "2",
|
||||
"Format": "FLAC",
|
||||
"CodecID": "A_FLAC",
|
||||
"Duration": "64.005000000",
|
||||
"BitRate_Mode": "VBR",
|
||||
"BitRate": "96000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1537",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072240",
|
||||
"FrameRate": "31.232",
|
||||
"FrameCount": "1999",
|
||||
"BitDepth": "24",
|
||||
"Compression_Mode": "Lossless",
|
||||
"Delay": "0.005",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Anglais E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 flac",
|
||||
"Language": "en",
|
||||
"Default": "No",
|
||||
"Forced": "No"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "2",
|
||||
"StreamOrder": "2",
|
||||
"ID": "3",
|
||||
"UniqueID": "3",
|
||||
"Format": "AC-3",
|
||||
"Format_Commercial_IfAny": "Dolby Digital",
|
||||
"Format_Settings_Endianness": "Big",
|
||||
"CodecID": "A_AC3",
|
||||
"Duration": "64.000000000",
|
||||
"BitRate_Mode": "CBR",
|
||||
"BitRate": "192000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1536",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072000",
|
||||
"FrameRate": "31.250",
|
||||
"FrameCount": "1999",
|
||||
"BitDepth": "32",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.000",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Anglais E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 ac3",
|
||||
"Language": "en",
|
||||
"ServiceKind": "CM",
|
||||
"Default": "No",
|
||||
"Forced": "No",
|
||||
"extra": {
|
||||
"bsid": "8",
|
||||
"dialnorm": "-31",
|
||||
"dsurmod": "0",
|
||||
"acmod": "2",
|
||||
"lfeon": "0",
|
||||
"dialnorm_Average": "-31",
|
||||
"dialnorm_Minimum": "-31"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "3",
|
||||
"StreamOrder": "3",
|
||||
"ID": "4",
|
||||
"UniqueID": "4",
|
||||
"Format": "E-AC-3",
|
||||
"Format_Commercial_IfAny": "Dolby Digital Plus",
|
||||
"Format_Settings_Endianness": "Big",
|
||||
"CodecID": "A_EAC3",
|
||||
"Duration": "64.000000000",
|
||||
"BitRate_Mode": "CBR",
|
||||
"BitRate": "192000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1536",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072000",
|
||||
"FrameRate": "31.250",
|
||||
"FrameCount": "1999",
|
||||
"BitDepth": "32",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.000",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Anglais E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 eac3",
|
||||
"Language": "en",
|
||||
"ServiceKind": "CM",
|
||||
"Default": "No",
|
||||
"Forced": "No",
|
||||
"extra": {
|
||||
"bsid": "16",
|
||||
"dialnorm": "-31",
|
||||
"dsurmod": "0",
|
||||
"acmod": "2",
|
||||
"lfeon": "0",
|
||||
"dialnorm_Average": "-31",
|
||||
"dialnorm_Minimum": "-31"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "4",
|
||||
"StreamOrder": "4",
|
||||
"ID": "5",
|
||||
"UniqueID": "5",
|
||||
"Format": "AAC",
|
||||
"Format_Settings_SBR": "No (Explicit)",
|
||||
"Format_AdditionalFeatures": "LC",
|
||||
"CodecID": "A_AAC-2",
|
||||
"Duration": "64.004000000",
|
||||
"BitRate": "96000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1024",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072192",
|
||||
"FrameRate": "46.875",
|
||||
"FrameCount": "1999",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.005",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Français E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 aac",
|
||||
"Language": "fr",
|
||||
"Default": "Yes",
|
||||
"Forced": "No"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "5",
|
||||
"StreamOrder": "5",
|
||||
"ID": "6",
|
||||
"UniqueID": "6",
|
||||
"Format": "AAC",
|
||||
"Format_Settings_SBR": "No (Explicit)",
|
||||
"Format_AdditionalFeatures": "LC",
|
||||
"CodecID": "A_AAC-2",
|
||||
"Duration": "64.004000000",
|
||||
"BitRate": "96000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1024",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072192",
|
||||
"FrameRate": "46.875",
|
||||
"FrameCount": "1999",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.005",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Anglais E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 aac",
|
||||
"Language": "en",
|
||||
"Default": "No",
|
||||
"Forced": "No"
|
||||
},
|
||||
{
|
||||
"@type": "Text",
|
||||
"StreamOrder": "6",
|
||||
"ID": "7",
|
||||
"UniqueID": "7",
|
||||
"Format": "UTF-8",
|
||||
"CodecID": "S_TEXT/UTF8",
|
||||
"Duration": "66.031000000",
|
||||
"BitRate": "46",
|
||||
"FrameRate": "0.182",
|
||||
"FrameCount": "12",
|
||||
"ElementCount": "12",
|
||||
"StreamSize": "381",
|
||||
"Title": "Français",
|
||||
"Language": "fr",
|
||||
"Default": "No",
|
||||
"Forced": "No"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,821 +0,0 @@
|
|||
{
|
||||
"_id": "C:/Transcode/Source Folder/h264.mkv",
|
||||
"file": "C:/Transcode/Source Folder/h264.mkv",
|
||||
"DB": "2MY5YD7P8",
|
||||
"footprintId": "asxmr-5Iij",
|
||||
"hasClosedCaptions": false,
|
||||
"container": "mkv",
|
||||
"scannerReads": {
|
||||
"ffProbeRead": "success",
|
||||
"exiftoolRead": "success",
|
||||
"mediaInfoRead": "success",
|
||||
"closedCaptionRead": "success"
|
||||
},
|
||||
"ffProbeData": {
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "h264",
|
||||
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
|
||||
"profile": "High",
|
||||
"codec_type": "video",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"width": 1918,
|
||||
"height": 1080,
|
||||
"coded_width": 1918,
|
||||
"coded_height": 1080,
|
||||
"closed_captions": 0,
|
||||
"has_b_frames": 2,
|
||||
"sample_aspect_ratio": "1:1",
|
||||
"display_aspect_ratio": "959:540",
|
||||
"pix_fmt": "yuv420p",
|
||||
"level": 41,
|
||||
"color_range": "tv",
|
||||
"color_space": "bt709",
|
||||
"chroma_location": "left",
|
||||
"field_order": "progressive",
|
||||
"refs": 1,
|
||||
"is_avc": "true",
|
||||
"nal_length_size": "4",
|
||||
"r_frame_rate": "25/1",
|
||||
"avg_frame_rate": "25/1",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"bits_per_raw_sample": "8",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "fre",
|
||||
"title": "title video",
|
||||
"BPS-eng": "6453995",
|
||||
"DURATION-eng": "00:01:03.960000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1599",
|
||||
"NUMBER_OF_BYTES-eng": "51599695",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"DURATION": "00:01:03.986000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "flac",
|
||||
"codec_long_name": "FLAC (Free Lossless Audio Codec)",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "s32",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 5,
|
||||
"start_time": "0.005000",
|
||||
"bits_per_raw_sample": "24",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "eng",
|
||||
"title": "Anglais E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 flac",
|
||||
"DURATION": "00:01:04.005000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"codec_name": "ac3",
|
||||
"codec_long_name": "ATSC A/52A (AC-3)",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"bit_rate": "192000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "eng",
|
||||
"title": "Anglais E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 ac3",
|
||||
"DURATION": "00:01:04.000000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"codec_name": "eac3",
|
||||
"codec_long_name": "ATSC A/52B (AC-3, E-AC-3)",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"bit_rate": "192000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "eng",
|
||||
"title": "Anglais E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 eac3",
|
||||
"DURATION": "00:01:04.000000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"codec_name": "aac",
|
||||
"codec_long_name": "AAC (Advanced Audio Coding)",
|
||||
"profile": "LC",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 5,
|
||||
"start_time": "0.005000",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "fre",
|
||||
"title": "Français E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 aac",
|
||||
"DURATION": "00:01:04.004000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"codec_name": "aac",
|
||||
"codec_long_name": "AAC (Advanced Audio Coding)",
|
||||
"profile": "LC",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 5,
|
||||
"start_time": "0.005000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "eng",
|
||||
"title": "Anglais E-AC3 2.0",
|
||||
"BPS-eng": "96000",
|
||||
"DURATION-eng": "00:01:03.968000000",
|
||||
"NUMBER_OF_FRAMES-eng": "1999",
|
||||
"NUMBER_OF_BYTES-eng": "767616",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"ENCODER": "Lavc58.42.102 aac",
|
||||
"DURATION": "00:01:04.004000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 6,
|
||||
"codec_name": "subrip",
|
||||
"codec_long_name": "SubRip subtitle",
|
||||
"codec_type": "subtitle",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"duration_ts": 66031,
|
||||
"duration": "66.031000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "en",
|
||||
"title": "Français",
|
||||
"BPS-eng": "46",
|
||||
"DURATION-eng": "00:01:05.840000000",
|
||||
"NUMBER_OF_FRAMES-eng": "12",
|
||||
"NUMBER_OF_BYTES-eng": "381",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"DURATION": "00:01:06.031000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 7,
|
||||
"codec_name": "subrip",
|
||||
"codec_long_name": "SubRip subtitle",
|
||||
"codec_type": "subtitle",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"duration_ts": 66031,
|
||||
"duration": "66.031000",
|
||||
"disposition": {
|
||||
"default": 0,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"language": "fre",
|
||||
"title": "Français",
|
||||
"BPS-eng": "46",
|
||||
"DURATION-eng": "00:01:05.840000000",
|
||||
"NUMBER_OF_FRAMES-eng": "12",
|
||||
"NUMBER_OF_BYTES-eng": "381",
|
||||
"_STATISTICS_WRITING_APP-eng": "mkvmerge v23.0.0 ('title') 64-bit",
|
||||
"_STATISTICS_WRITING_DATE_UTC-eng": "2018-06-14 17:49:29",
|
||||
"_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES",
|
||||
"DURATION": "00:01:06.031000000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"filename": "C:/Transcode/Source Folder/h264.mkv",
|
||||
"nb_streams": 7,
|
||||
"nb_programs": 0,
|
||||
"format_name": "matroska,webm",
|
||||
"format_long_name": "Matroska / WebM",
|
||||
"start_time": "0.000000",
|
||||
"duration": "66.031000",
|
||||
"size": "68084120",
|
||||
"bit_rate": "8248746",
|
||||
"probe_score": 100,
|
||||
"tags": {
|
||||
"ENCODER": "Lavf58.24.101"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_size": 64.9300765991211,
|
||||
"video_resolution": "1080p",
|
||||
"fileMedium": "video",
|
||||
"video_codec_name": "h264",
|
||||
"audio_codec_name": "",
|
||||
"lastPluginDetails": "none",
|
||||
"createdAt": 1653139154025,
|
||||
"bit_rate": 8248746,
|
||||
"duration": 66,
|
||||
"statSync": {
|
||||
"dev": 3832468976,
|
||||
"mode": 33206,
|
||||
"nlink": 1,
|
||||
"uid": 0,
|
||||
"gid": 0,
|
||||
"rdev": 0,
|
||||
"blksize": 4096,
|
||||
"ino": 64176294690080990,
|
||||
"size": 68084120,
|
||||
"blocks": 132984,
|
||||
"atimeMs": 1653139154001.7666,
|
||||
"mtimeMs": 1594420078270.8928,
|
||||
"ctimeMs": 1653139134390.225,
|
||||
"birthtimeMs": 1653139123219.1018,
|
||||
"atime": "2022-05-21T13:19:14.002Z",
|
||||
"mtime": "2020-07-10T22:27:58.271Z",
|
||||
"ctime": "2022-05-21T13:18:54.390Z",
|
||||
"birthtime": "2022-05-21T13:18:43.219Z"
|
||||
},
|
||||
"HealthCheck": "",
|
||||
"TranscodeDecisionMaker": "",
|
||||
"lastHealthCheckDate": 0,
|
||||
"holdUntil": 0,
|
||||
"lastTranscodeDate": 0,
|
||||
"bumped": false,
|
||||
"history": "",
|
||||
"oldSize": 0,
|
||||
"newSize": 0,
|
||||
"videoStreamIndex": 0,
|
||||
"meta": {
|
||||
"SourceFile": "C:/Transcode/Source Folder/h264.mkv",
|
||||
"errors": [],
|
||||
"Duration": 66.031,
|
||||
"ExifToolVersion": 12.4,
|
||||
"FileName": "h264.mkv",
|
||||
"Directory": "C:/Transcode/Source Folder",
|
||||
"FileSize": "65 MiB",
|
||||
"FileModifyDate": {
|
||||
"year": 2020,
|
||||
"month": 7,
|
||||
"day": 10,
|
||||
"hour": 23,
|
||||
"minute": 27,
|
||||
"second": 58,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2020:07:10 23:27:58+01:00"
|
||||
},
|
||||
"FileAccessDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 21,
|
||||
"hour": 14,
|
||||
"minute": 19,
|
||||
"second": 11,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:21 14:19:11+01:00"
|
||||
},
|
||||
"FileCreateDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 21,
|
||||
"hour": 14,
|
||||
"minute": 18,
|
||||
"second": 43,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:21 14:18:43+01:00"
|
||||
},
|
||||
"FilePermissions": "-rw-rw-rw-",
|
||||
"FileType": "MKV",
|
||||
"FileTypeExtension": "mkv",
|
||||
"MIMEType": "video/x-matroska",
|
||||
"EBMLVersion": 1,
|
||||
"EBMLReadVersion": 1,
|
||||
"DocType": "matroska",
|
||||
"DocTypeVersion": 4,
|
||||
"DocTypeReadVersion": 2,
|
||||
"TimecodeScale": "1 ms",
|
||||
"MuxingApp": "Lavf58.24.101",
|
||||
"WritingApp": "Lavf58.24.101",
|
||||
"VideoFrameRate": 25,
|
||||
"ImageWidth": 1918,
|
||||
"ImageHeight": 1080,
|
||||
"VideoScanType": "Unknown (2)",
|
||||
"AudioChannels": 2,
|
||||
"AudioSampleRate": 48000,
|
||||
"AudioBitsPerSample": 32,
|
||||
"TrackNumber": 7,
|
||||
"TrackName": "Français",
|
||||
"TrackLanguage": "fre",
|
||||
"TrackDefault": "No",
|
||||
"CodecID": "S_TEXT/UTF8",
|
||||
"TrackType": "Subtitle",
|
||||
"TagLanguage": "eng",
|
||||
"TagName": "DURATION",
|
||||
"TagString": "00:01:06.031000000",
|
||||
"ImageSize": "1918x1080",
|
||||
"Megapixels": 2.1
|
||||
},
|
||||
"mediaInfo": {
|
||||
"@ref": "",
|
||||
"track": [
|
||||
{
|
||||
"@type": "General",
|
||||
"UniqueID": "191657682055212276795239999260924509108",
|
||||
"VideoCount": "1",
|
||||
"AudioCount": "5",
|
||||
"TextCount": "1",
|
||||
"Format": "Matroska",
|
||||
"Format_Version": "4",
|
||||
"FileSize": "68084120",
|
||||
"Duration": "66.031",
|
||||
"OverallBitRate_Mode": "VBR",
|
||||
"OverallBitRate": "8248746",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "1599",
|
||||
"StreamSize": "12645964",
|
||||
"IsStreamable": "Yes",
|
||||
"Encoded_Application": "Lavf58.24.101",
|
||||
"Encoded_Library": "Lavf58.24.101",
|
||||
"extra": {
|
||||
"ErrorDetectionType": "Per level 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Video",
|
||||
"StreamOrder": "0",
|
||||
"ID": "1",
|
||||
"UniqueID": "1",
|
||||
"Format": "AVC",
|
||||
"Format_Profile": "High",
|
||||
"Format_Level": "4.1",
|
||||
"Format_Settings_CABAC": "Yes",
|
||||
"Format_Settings_RefFrames": "4",
|
||||
"CodecID": "V_MPEG4/ISO/AVC",
|
||||
"Duration": "63.986000000",
|
||||
"BitRate": "6453995",
|
||||
"Width": "1918",
|
||||
"Height": "1080",
|
||||
"Stored_Width": "1920",
|
||||
"Stored_Height": "1088",
|
||||
"Sampled_Width": "1918",
|
||||
"Sampled_Height": "1080",
|
||||
"PixelAspectRatio": "1.000",
|
||||
"DisplayAspectRatio": "1.776",
|
||||
"FrameRate_Mode": "VFR",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "1599",
|
||||
"ColorSpace": "YUV",
|
||||
"ChromaSubsampling": "4:2:0",
|
||||
"BitDepth": "8",
|
||||
"ScanType": "Progressive",
|
||||
"Delay": "0.000",
|
||||
"StreamSize": "51599695",
|
||||
"Title": "title video",
|
||||
"Language": "fr",
|
||||
"Default": "Yes",
|
||||
"Forced": "No",
|
||||
"colour_description_present": "Yes",
|
||||
"colour_description_present_Source": "Container / Stream",
|
||||
"colour_range": "Limited",
|
||||
"colour_range_Source": "Container / Stream",
|
||||
"colour_primaries_Source": "Stream",
|
||||
"transfer_characteristics_Source": "Stream",
|
||||
"matrix_coefficients": "BT.709",
|
||||
"matrix_coefficients_Source": "Container / Stream"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "1",
|
||||
"StreamOrder": "1",
|
||||
"ID": "2",
|
||||
"UniqueID": "2",
|
||||
"Format": "FLAC",
|
||||
"CodecID": "A_FLAC",
|
||||
"Duration": "64.005000000",
|
||||
"BitRate_Mode": "VBR",
|
||||
"BitRate": "96000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1537",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072240",
|
||||
"FrameRate": "31.232",
|
||||
"FrameCount": "1999",
|
||||
"BitDepth": "24",
|
||||
"Compression_Mode": "Lossless",
|
||||
"Delay": "0.005",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Anglais E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 flac",
|
||||
"Language": "en",
|
||||
"Default": "No",
|
||||
"Forced": "No"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "2",
|
||||
"StreamOrder": "2",
|
||||
"ID": "3",
|
||||
"UniqueID": "3",
|
||||
"Format": "AC-3",
|
||||
"Format_Commercial_IfAny": "Dolby Digital",
|
||||
"Format_Settings_Endianness": "Big",
|
||||
"CodecID": "A_AC3",
|
||||
"Duration": "64.000000000",
|
||||
"BitRate_Mode": "CBR",
|
||||
"BitRate": "192000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1536",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072000",
|
||||
"FrameRate": "31.250",
|
||||
"FrameCount": "1999",
|
||||
"BitDepth": "32",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.000",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Anglais E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 ac3",
|
||||
"Language": "en",
|
||||
"ServiceKind": "CM",
|
||||
"Default": "No",
|
||||
"Forced": "No",
|
||||
"extra": {
|
||||
"bsid": "8",
|
||||
"dialnorm": "-31",
|
||||
"dsurmod": "0",
|
||||
"acmod": "2",
|
||||
"lfeon": "0",
|
||||
"dialnorm_Average": "-31",
|
||||
"dialnorm_Minimum": "-31"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "3",
|
||||
"StreamOrder": "3",
|
||||
"ID": "4",
|
||||
"UniqueID": "4",
|
||||
"Format": "E-AC-3",
|
||||
"Format_Commercial_IfAny": "Dolby Digital Plus",
|
||||
"Format_Settings_Endianness": "Big",
|
||||
"CodecID": "A_EAC3",
|
||||
"Duration": "64.000000000",
|
||||
"BitRate_Mode": "CBR",
|
||||
"BitRate": "192000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1536",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072000",
|
||||
"FrameRate": "31.250",
|
||||
"FrameCount": "1999",
|
||||
"BitDepth": "32",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.000",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Anglais E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 eac3",
|
||||
"Language": "en",
|
||||
"ServiceKind": "CM",
|
||||
"Default": "No",
|
||||
"Forced": "No",
|
||||
"extra": {
|
||||
"bsid": "16",
|
||||
"dialnorm": "-31",
|
||||
"dsurmod": "0",
|
||||
"acmod": "2",
|
||||
"lfeon": "0",
|
||||
"dialnorm_Average": "-31",
|
||||
"dialnorm_Minimum": "-31"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "4",
|
||||
"StreamOrder": "4",
|
||||
"ID": "5",
|
||||
"UniqueID": "5",
|
||||
"Format": "AAC",
|
||||
"Format_Settings_SBR": "No (Explicit)",
|
||||
"Format_AdditionalFeatures": "LC",
|
||||
"CodecID": "A_AAC-2",
|
||||
"Duration": "64.004000000",
|
||||
"BitRate": "96000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1024",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072192",
|
||||
"FrameRate": "46.875",
|
||||
"FrameCount": "1999",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.005",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Français E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 aac",
|
||||
"Language": "fr",
|
||||
"Default": "Yes",
|
||||
"Forced": "No"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "5",
|
||||
"StreamOrder": "5",
|
||||
"ID": "6",
|
||||
"UniqueID": "6",
|
||||
"Format": "AAC",
|
||||
"Format_Settings_SBR": "No (Explicit)",
|
||||
"Format_AdditionalFeatures": "LC",
|
||||
"CodecID": "A_AAC-2",
|
||||
"Duration": "64.004000000",
|
||||
"BitRate": "96000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1024",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "3072192",
|
||||
"FrameRate": "46.875",
|
||||
"FrameCount": "1999",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.005",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "767616",
|
||||
"StreamSize_Proportion": "0.01127",
|
||||
"Title": "Anglais E-AC3 2.0",
|
||||
"Encoded_Library": "Lavc58.42.102 aac",
|
||||
"Language": "en",
|
||||
"Default": "No",
|
||||
"Forced": "No"
|
||||
},
|
||||
{
|
||||
"@type": "Text",
|
||||
"StreamOrder": "6",
|
||||
"ID": "7",
|
||||
"UniqueID": "7",
|
||||
"Format": "UTF-8",
|
||||
"CodecID": "S_TEXT/UTF8",
|
||||
"Duration": "66.031000000",
|
||||
"BitRate": "46",
|
||||
"FrameRate": "0.182",
|
||||
"FrameCount": "12",
|
||||
"ElementCount": "12",
|
||||
"StreamSize": "381",
|
||||
"Title": "Français",
|
||||
"Language": "fr",
|
||||
"Default": "No",
|
||||
"Forced": "No"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,334 +0,0 @@
|
|||
{
|
||||
"_id": "C:/Transcode/Source Folder/qsv_h265.mkv",
|
||||
"file": "C:/Transcode/Source Folder/qsv_h265.mkv",
|
||||
"DB": "2MY5YD7P8",
|
||||
"footprintId": "xkZP3IPR6g",
|
||||
"hasClosedCaptions": false,
|
||||
"container": "mkv",
|
||||
"scannerReads": {
|
||||
"ffProbeRead": "success",
|
||||
"exiftoolRead": "success",
|
||||
"mediaInfoRead": "success",
|
||||
"closedCaptionRead": "\"Unable to run CCExtractor\""
|
||||
},
|
||||
"ffProbeData": {
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "hevc",
|
||||
"codec_long_name": "H.265 / HEVC (High Efficiency Video Coding)",
|
||||
"profile": "Main",
|
||||
"codec_type": "video",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"width": 1920,
|
||||
"height": 1080,
|
||||
"coded_width": 1920,
|
||||
"coded_height": 1088,
|
||||
"closed_captions": 0,
|
||||
"has_b_frames": 1,
|
||||
"sample_aspect_ratio": "1:1",
|
||||
"display_aspect_ratio": "16:9",
|
||||
"pix_fmt": "yuv420p",
|
||||
"level": 150,
|
||||
"color_range": "tv",
|
||||
"color_space": "bt709",
|
||||
"color_transfer": "bt709",
|
||||
"color_primaries": "bt709",
|
||||
"chroma_location": "left",
|
||||
"refs": 1,
|
||||
"r_frame_rate": "25/1",
|
||||
"avg_frame_rate": "25/1",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 21,
|
||||
"start_time": "0.021000",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"DURATION": "00:00:21.341000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "aac",
|
||||
"codec_long_name": "AAC (Advanced Audio Coding)",
|
||||
"profile": "LC",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"title": "Stereo",
|
||||
"DURATION": "00:00:21.375000000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"filename": "C:/Transcode/Source Folder/qsv_h265.mkv",
|
||||
"nb_streams": 2,
|
||||
"nb_programs": 0,
|
||||
"format_name": "matroska,webm",
|
||||
"format_long_name": "Matroska / WebM",
|
||||
"start_time": "0.000000",
|
||||
"duration": "21.375000",
|
||||
"size": "8569883",
|
||||
"bit_rate": "3207441",
|
||||
"probe_score": 100,
|
||||
"tags": {
|
||||
"creation_time": "2019-09-13T16:46:14.000000Z",
|
||||
"ENCODER": "Lavf58.20.100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_size": 8.172877311706543,
|
||||
"video_resolution": "1080p",
|
||||
"fileMedium": "video",
|
||||
"video_codec_name": "hevc",
|
||||
"audio_codec_name": "",
|
||||
"lastPluginDetails": "none",
|
||||
"createdAt": 1653029410394,
|
||||
"bit_rate": 3207441,
|
||||
"duration": 21,
|
||||
"statSync": {
|
||||
"dev": 3832468976,
|
||||
"mode": 33060,
|
||||
"nlink": 1,
|
||||
"uid": 0,
|
||||
"gid": 0,
|
||||
"rdev": 0,
|
||||
"blksize": 4096,
|
||||
"ino": 1970324841360027,
|
||||
"size": 8569883,
|
||||
"blocks": 16744,
|
||||
"atimeMs": 1653029410381.1382,
|
||||
"mtimeMs": 1568393195000,
|
||||
"ctimeMs": 1650864287188.087,
|
||||
"birthtimeMs": 1650864302270.2063,
|
||||
"atime": "2022-05-20T06:50:10.381Z",
|
||||
"mtime": "2019-09-13T16:46:35.000Z",
|
||||
"ctime": "2022-04-25T05:24:47.188Z",
|
||||
"birthtime": "2022-04-25T05:25:02.270Z"
|
||||
},
|
||||
"HealthCheck": "",
|
||||
"TranscodeDecisionMaker": "",
|
||||
"lastHealthCheckDate": 0,
|
||||
"holdUntil": 0,
|
||||
"lastTranscodeDate": 0,
|
||||
"bumped": false,
|
||||
"history": "",
|
||||
"oldSize": 0,
|
||||
"newSize": 0,
|
||||
"videoStreamIndex": 0,
|
||||
"lastUpdate": 1653027918258,
|
||||
"meta": {
|
||||
"SourceFile": "C:/Transcode/Source Folder/qsv_h265.mkv",
|
||||
"errors": [],
|
||||
"Duration": 21.375,
|
||||
"ExifToolVersion": 12.4,
|
||||
"FileName": "qsv_h265.mkv",
|
||||
"Directory": "C:/Transcode/Source Folder",
|
||||
"FileSize": "8.2 MiB",
|
||||
"FileModifyDate": {
|
||||
"year": 2019,
|
||||
"month": 9,
|
||||
"day": 13,
|
||||
"hour": 17,
|
||||
"minute": 46,
|
||||
"second": 35,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2019:09:13 17:46:35+01:00"
|
||||
},
|
||||
"FileAccessDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 20,
|
||||
"hour": 7,
|
||||
"minute": 50,
|
||||
"second": 9,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:20 07:50:09+01:00"
|
||||
},
|
||||
"FileCreateDate": {
|
||||
"year": 2022,
|
||||
"month": 4,
|
||||
"day": 25,
|
||||
"hour": 6,
|
||||
"minute": 25,
|
||||
"second": 2,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:04:25 06:25:02+01:00"
|
||||
},
|
||||
"FilePermissions": "-r--r--r--",
|
||||
"FileType": "MKV",
|
||||
"FileTypeExtension": "mkv",
|
||||
"MIMEType": "video/x-matroska",
|
||||
"EBMLVersion": 1,
|
||||
"EBMLReadVersion": 1,
|
||||
"DocType": "matroska",
|
||||
"DocTypeVersion": 4,
|
||||
"DocTypeReadVersion": 2,
|
||||
"TimecodeScale": "1 ms",
|
||||
"MuxingApp": "Lavf58.20.100",
|
||||
"WritingApp": "HandBrake 1.2.2 2019022300",
|
||||
"DateTimeOriginal": {
|
||||
"year": 2019,
|
||||
"month": 9,
|
||||
"day": 13,
|
||||
"hour": 16,
|
||||
"minute": 46,
|
||||
"second": 14,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 0,
|
||||
"rawValue": "2019:09:13 16:46:14Z"
|
||||
},
|
||||
"VideoFrameRate": 25,
|
||||
"ImageWidth": 1920,
|
||||
"ImageHeight": 1080,
|
||||
"TrackNumber": 2,
|
||||
"TrackName": "Stereo",
|
||||
"TrackLanguage": "und",
|
||||
"CodecID": "A_AAC",
|
||||
"TrackType": "Audio",
|
||||
"AudioChannels": 2,
|
||||
"AudioSampleRate": 48000,
|
||||
"TagName": "DURATION",
|
||||
"TagString": "00:00:21.375000000",
|
||||
"ImageSize": "1920x1080",
|
||||
"Megapixels": 2.1
|
||||
},
|
||||
"mediaInfo": {
|
||||
"@ref": "",
|
||||
"track": [
|
||||
{
|
||||
"@type": "General",
|
||||
"UniqueID": "112612991515236890937117095733641799622",
|
||||
"VideoCount": "1",
|
||||
"AudioCount": "1",
|
||||
"Format": "Matroska",
|
||||
"Format_Version": "4",
|
||||
"FileSize": "8569883",
|
||||
"Duration": "21.375",
|
||||
"OverallBitRate": "3207442",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "533",
|
||||
"IsStreamable": "Yes",
|
||||
"Encoded_Date": "UTC 2019-09-13 16:46:14",
|
||||
"Encoded_Application": "HandBrake 1.2.2 2019022300",
|
||||
"Encoded_Library": "Lavf58.20.100",
|
||||
"extra": {
|
||||
"ErrorDetectionType": "Per level 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Video",
|
||||
"StreamOrder": "0",
|
||||
"ID": "1",
|
||||
"UniqueID": "1",
|
||||
"Format": "HEVC",
|
||||
"Format_Profile": "Main",
|
||||
"Format_Level": "5",
|
||||
"Format_Tier": "Main",
|
||||
"CodecID": "V_MPEGH/ISO/HEVC",
|
||||
"Duration": "21.320000000",
|
||||
"Width": "1920",
|
||||
"Height": "1080",
|
||||
"Stored_Height": "1088",
|
||||
"Sampled_Width": "1920",
|
||||
"Sampled_Height": "1080",
|
||||
"PixelAspectRatio": "1.000",
|
||||
"DisplayAspectRatio": "1.778",
|
||||
"FrameRate_Mode": "CFR",
|
||||
"FrameRate": "25.000",
|
||||
"FrameCount": "533",
|
||||
"ColorSpace": "YUV",
|
||||
"ChromaSubsampling": "4:2:0",
|
||||
"BitDepth": "8",
|
||||
"Delay": "0.021",
|
||||
"Default": "Yes",
|
||||
"Forced": "No",
|
||||
"colour_description_present": "Yes",
|
||||
"colour_description_present_Source": "Stream",
|
||||
"colour_range": "Limited",
|
||||
"colour_range_Source": "Stream",
|
||||
"colour_primaries": "BT.709",
|
||||
"colour_primaries_Source": "Stream",
|
||||
"transfer_characteristics": "BT.709",
|
||||
"transfer_characteristics_Source": "Stream",
|
||||
"matrix_coefficients": "BT.709",
|
||||
"matrix_coefficients_Source": "Stream"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"StreamOrder": "1",
|
||||
"ID": "2",
|
||||
"UniqueID": "2",
|
||||
"Format": "AAC",
|
||||
"Format_Settings_SBR": "No (Explicit)",
|
||||
"Format_AdditionalFeatures": "LC",
|
||||
"CodecID": "A_AAC-2",
|
||||
"Duration": "21.375000000",
|
||||
"Channels": "2",
|
||||
"ChannelPositions": "Front: L R",
|
||||
"ChannelLayout": "L R",
|
||||
"SamplesPerFrame": "1024",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "1026000",
|
||||
"FrameRate": "46.875",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.000",
|
||||
"Delay_Source": "Container",
|
||||
"Title": "Stereo",
|
||||
"Default": "Yes",
|
||||
"Forced": "No"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1,314 +0,0 @@
|
|||
{
|
||||
"_id": "C:/Transcode/Source Folder/sample__-__-__libmp3lame__30s__audio.mkv",
|
||||
"file": "C:/Transcode/Source Folder/sample__-__-__libmp3lame__30s__audio.mkv",
|
||||
"DB": "2MY5YD7P8",
|
||||
"footprintId": "xpsr-dmmd",
|
||||
"hasClosedCaptions": false,
|
||||
"container": "mkv",
|
||||
"scannerReads": {
|
||||
"ffProbeRead": "success",
|
||||
"exiftoolRead": "success",
|
||||
"mediaInfoRead": "success",
|
||||
"closedCaptionRead": "\"Unable to run CCExtractor\""
|
||||
},
|
||||
"ffProbeData": {
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "mp3",
|
||||
"codec_long_name": "MP3 (MPEG audio layer 3)",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"bit_rate": "128000",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"HANDLER_NAME": "GPAC ISO Audio Handler",
|
||||
"ENCODER": "Lavc57.107.100 libmp3lame",
|
||||
"DURATION": "00:00:30.023000000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "mp3",
|
||||
"codec_long_name": "MP3 (MPEG audio layer 3)",
|
||||
"codec_type": "audio",
|
||||
"codec_tag_string": "[0][0][0][0]",
|
||||
"codec_tag": "0x0000",
|
||||
"sample_fmt": "fltp",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"channel_layout": "stereo",
|
||||
"bits_per_sample": 0,
|
||||
"r_frame_rate": "0/0",
|
||||
"avg_frame_rate": "0/0",
|
||||
"time_base": "1/1000",
|
||||
"start_pts": 0,
|
||||
"start_time": "0.000000",
|
||||
"bit_rate": "128000",
|
||||
"disposition": {
|
||||
"default": 1,
|
||||
"dub": 0,
|
||||
"original": 0,
|
||||
"comment": 0,
|
||||
"lyrics": 0,
|
||||
"karaoke": 0,
|
||||
"forced": 0,
|
||||
"hearing_impaired": 0,
|
||||
"visual_impaired": 0,
|
||||
"clean_effects": 0,
|
||||
"attached_pic": 0,
|
||||
"timed_thumbnails": 0,
|
||||
"captions": 0,
|
||||
"descriptions": 0,
|
||||
"metadata": 0,
|
||||
"dependent": 0,
|
||||
"still_image": 0
|
||||
},
|
||||
"tags": {
|
||||
"HANDLER_NAME": "GPAC ISO Audio Handler",
|
||||
"ENCODER": "Lavc57.107.100 libmp3lame",
|
||||
"DURATION": "00:00:30.023000000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"filename": "C:/Transcode/Source Folder/sample__-__-__libmp3lame__30s__audio.mkv",
|
||||
"nb_streams": 2,
|
||||
"nb_programs": 0,
|
||||
"format_name": "matroska,webm",
|
||||
"format_long_name": "Matroska / WebM",
|
||||
"start_time": "0.000000",
|
||||
"duration": "30.023000",
|
||||
"size": "979815",
|
||||
"bit_rate": "261083",
|
||||
"probe_score": 100,
|
||||
"tags": {
|
||||
"title": "Big Buck Bunny, Sunflower version",
|
||||
"GENRE": "Animation",
|
||||
"MAJOR_BRAND": "isom",
|
||||
"MINOR_VERSION": "1",
|
||||
"COMPATIBLE_BRANDS": "isomavc1",
|
||||
"COMPOSER": "Sacha Goedegebure",
|
||||
"ARTIST": "Blender Foundation 2008, Janus Bager Kristensen 2013",
|
||||
"COMMENT": "Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net",
|
||||
"ENCODER": "Lavf57.83.100"
|
||||
}
|
||||
}
|
||||
},
|
||||
"file_size": 0.9344244003295898,
|
||||
"video_resolution": "",
|
||||
"fileMedium": "audio",
|
||||
"video_codec_name": "",
|
||||
"audio_codec_name": "mp3",
|
||||
"lastPluginDetails": "none",
|
||||
"createdAt": 1653224430511,
|
||||
"bit_rate": 261083,
|
||||
"duration": 30,
|
||||
"statSync": {
|
||||
"dev": 3832468976,
|
||||
"mode": 33206,
|
||||
"nlink": 1,
|
||||
"uid": 0,
|
||||
"gid": 0,
|
||||
"rdev": 0,
|
||||
"blksize": 4096,
|
||||
"ino": 10133099162447292,
|
||||
"size": 979815,
|
||||
"blocks": 1920,
|
||||
"atimeMs": 1653224430487.7,
|
||||
"mtimeMs": 1653224386734.2915,
|
||||
"ctimeMs": 1653224395573.211,
|
||||
"birthtimeMs": 1653224386247.453,
|
||||
"atime": "2022-05-22T13:00:30.488Z",
|
||||
"mtime": "2022-05-22T12:59:46.734Z",
|
||||
"ctime": "2022-05-22T12:59:55.573Z",
|
||||
"birthtime": "2022-05-22T12:59:46.247Z"
|
||||
},
|
||||
"HealthCheck": "",
|
||||
"TranscodeDecisionMaker": "",
|
||||
"lastHealthCheckDate": 0,
|
||||
"holdUntil": 0,
|
||||
"lastTranscodeDate": 0,
|
||||
"bumped": false,
|
||||
"history": "",
|
||||
"oldSize": 0,
|
||||
"newSize": 0,
|
||||
"videoStreamIndex": -1,
|
||||
"meta": {
|
||||
"SourceFile": "C:/Transcode/Source Folder/sample__-__-__libmp3lame__30s__audio.mkv",
|
||||
"errors": [],
|
||||
"Duration": 30.023,
|
||||
"ExifToolVersion": 12.4,
|
||||
"FileName": "sample__-__-__libmp3lame__30s__audio.mkv",
|
||||
"Directory": "C:/Transcode/Source Folder",
|
||||
"FileSize": "957 KiB",
|
||||
"ZoneIdentifier": "Exists",
|
||||
"FileModifyDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 22,
|
||||
"hour": 13,
|
||||
"minute": 59,
|
||||
"second": 46,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:22 13:59:46+01:00"
|
||||
},
|
||||
"FileAccessDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 22,
|
||||
"hour": 14,
|
||||
"minute": 0,
|
||||
"second": 29,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:22 14:00:29+01:00"
|
||||
},
|
||||
"FileCreateDate": {
|
||||
"year": 2022,
|
||||
"month": 5,
|
||||
"day": 22,
|
||||
"hour": 13,
|
||||
"minute": 59,
|
||||
"second": 46,
|
||||
"millisecond": 0,
|
||||
"tzoffsetMinutes": 60,
|
||||
"rawValue": "2022:05:22 13:59:46+01:00"
|
||||
},
|
||||
"FilePermissions": "-rw-rw-rw-",
|
||||
"FileType": "MKA",
|
||||
"FileTypeExtension": "mka",
|
||||
"MIMEType": "audio/x-matroska",
|
||||
"EBMLVersion": 1,
|
||||
"EBMLReadVersion": 1,
|
||||
"DocType": "matroska",
|
||||
"DocTypeVersion": 4,
|
||||
"DocTypeReadVersion": 2,
|
||||
"TimecodeScale": "1 ms",
|
||||
"Title": "Big Buck Bunny, Sunflower version",
|
||||
"MuxingApp": "Lavf57.83.100",
|
||||
"WritingApp": "Lavf57.83.100",
|
||||
"TrackNumber": 2,
|
||||
"TrackLanguage": "und",
|
||||
"CodecID": "A_MPEG/L3",
|
||||
"TrackType": "Audio",
|
||||
"AudioChannels": 2,
|
||||
"AudioSampleRate": 48000,
|
||||
"AudioBitsPerSample": 32,
|
||||
"TagName": "DURATION",
|
||||
"TagString": "00:00:30.023000000"
|
||||
},
|
||||
"mediaInfo": {
|
||||
"@ref": "",
|
||||
"track": [
|
||||
{
|
||||
"@type": "General",
|
||||
"UniqueID": "301354878049300200919944107613778820882",
|
||||
"AudioCount": "2",
|
||||
"Format": "Matroska",
|
||||
"Format_Version": "4",
|
||||
"FileSize": "979815",
|
||||
"Duration": "30.023",
|
||||
"OverallBitRate_Mode": "CBR",
|
||||
"OverallBitRate": "261084",
|
||||
"StreamSize": "19079",
|
||||
"IsStreamable": "Yes",
|
||||
"Title": "Big Buck Bunny, Sunflower version",
|
||||
"Track": "Big Buck Bunny, Sunflower version",
|
||||
"Encoded_Application": "Lavf57.83.100",
|
||||
"Encoded_Library": "Lavf57.83.100",
|
||||
"Comment": "Creative Commons Attribution 3.0 - http://bbb3d.renderfarming.net",
|
||||
"extra": {
|
||||
"ErrorDetectionType": "Per level 1",
|
||||
"ARTIST": "Blender Foundation 2008, Janus Bager Kristensen 2013",
|
||||
"COMPOSER": "Sacha Goedegebure",
|
||||
"GENRE": "Animation"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "1",
|
||||
"StreamOrder": "0",
|
||||
"ID": "1",
|
||||
"UniqueID": "1",
|
||||
"Format": "MPEG Audio",
|
||||
"Format_Version": "1",
|
||||
"Format_Profile": "Layer 3",
|
||||
"Format_Settings_Mode": "Joint stereo",
|
||||
"Format_Settings_ModeExtension": "MS Stereo",
|
||||
"CodecID": "A_MPEG/L3",
|
||||
"Duration": "30.023000000",
|
||||
"BitRate_Mode": "CBR",
|
||||
"BitRate": "128000",
|
||||
"Channels": "2",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "1441104",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.000",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "480368",
|
||||
"StreamSize_Proportion": "0.49026",
|
||||
"Encoded_Library": "Lavc57.107.100 libmp3lame",
|
||||
"Default": "Yes",
|
||||
"Forced": "No"
|
||||
},
|
||||
{
|
||||
"@type": "Audio",
|
||||
"@typeorder": "2",
|
||||
"StreamOrder": "1",
|
||||
"ID": "2",
|
||||
"UniqueID": "2",
|
||||
"Format": "MPEG Audio",
|
||||
"Format_Version": "1",
|
||||
"Format_Profile": "Layer 3",
|
||||
"Format_Settings_Mode": "Joint stereo",
|
||||
"Format_Settings_ModeExtension": "MS Stereo",
|
||||
"CodecID": "A_MPEG/L3",
|
||||
"Duration": "30.023000000",
|
||||
"BitRate_Mode": "CBR",
|
||||
"BitRate": "128000",
|
||||
"Channels": "2",
|
||||
"SamplingRate": "48000",
|
||||
"SamplingCount": "1441104",
|
||||
"Compression_Mode": "Lossy",
|
||||
"Delay": "0.000",
|
||||
"Delay_Source": "Container",
|
||||
"StreamSize": "480368",
|
||||
"StreamSize_Proportion": "0.49026",
|
||||
"Encoded_Library": "Lavc57.107.100 libmp3lame",
|
||||
"Default": "Yes",
|
||||
"Forced": "No"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue