Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ffmpeg com #679

Merged
merged 6 commits into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var os_1 = __importDefault(require("os"));
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: '10 Bit Video',
Expand Down Expand Up @@ -32,6 +33,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
for (var i = 0; i < args.variables.ffmpegCommand.streams.length; i += 1) {
var stream = args.variables.ffmpegCommand.streams[i];
if (stream.codec_type === 'video') {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Crop Black Bars',
Expand Down Expand Up @@ -29,6 +30,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
return {
outputFileObj: args.inputFileObj,
outputNumber: 1,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Custom Arguments',
Expand Down Expand Up @@ -50,6 +51,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
var inputArguments = String(args.inputs.inputArguments);
var outputArguments = String(args.inputs.outputArguments);
if (inputArguments) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var fileUtils_1 = require("../../../../FlowHelpers/1.0.0/fileUtils");
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Ensure Audio Stream',
Expand Down Expand Up @@ -224,6 +225,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
var audioEncoder = String(args.inputs.audioEncoder);
var langTag = String(args.inputs.language).toLowerCase();
var wantedChannelCount = Number(args.inputs.channels);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var cliUtils_1 = require("../../../../FlowHelpers/1.0.0/cliUtils");
var fileUtils_1 = require("../../../../FlowHelpers/1.0.0/fileUtils");
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Execute',
Expand Down Expand Up @@ -103,6 +104,7 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function
lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
cliArgs = [];
cliArgs.push('-y');
cliArgs.push('-i');
Expand Down Expand Up @@ -193,6 +195,8 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function
throw new Error('FFmpeg failed');
}
args.logOutcome('tSuc');
// eslint-disable-next-line no-param-reassign
args.variables.ffmpegCommand.init = false;
return [2 /*return*/, {
outputFileObj: {
_id: outputFilePath,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'HDR to SDR',
Expand Down Expand Up @@ -28,6 +29,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
args.variables.ffmpegCommand.streams.forEach(function (stream) {
if (stream.codec_type === 'video') {
stream.outputArgs.push('-vf', 'zscale=t=linear:npl=100,format=yuv420p');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Normalize Audio',
Expand Down Expand Up @@ -29,6 +30,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
return {
outputFileObj: args.inputFileObj,
outputNumber: 1,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint-disable no-param-reassign */
var details = function () { return ({
name: 'Remove Data Streams',
Expand Down Expand Up @@ -29,6 +30,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
args.variables.ffmpegCommand.streams.forEach(function (stream) {
if (stream.codec_type === 'data') {
stream.removed = true;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Remove Stream By Property',
Expand Down Expand Up @@ -63,6 +64,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
var propertyToCheck = String(args.inputs.propertyToCheck).trim();
var valuesToRemove = String(args.inputs.valuesToRemove).trim().split(',').map(function (item) { return item.trim(); });
var condition = String(args.inputs.condition);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint-disable no-param-reassign */
var details = function () { return ({
name: 'Remove Subtitles',
Expand Down Expand Up @@ -29,6 +30,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
args.variables.ffmpegCommand.streams.forEach(function (stream) {
if (stream.codec_type === 'subtitle') {
stream.removed = true;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Reorder Streams',
Expand Down Expand Up @@ -79,6 +80,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
var streams = JSON.parse(JSON.stringify(args.variables.ffmpegCommand.streams));
streams.forEach(function (stream, index) {
// eslint-disable-next-line no-param-reassign
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var fileUtils_1 = require("../../../../FlowHelpers/1.0.0/fileUtils");
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint-disable no-param-reassign */
var details = function () { return ({
name: 'Set Container',
Expand Down Expand Up @@ -55,6 +56,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
var newContainer = String(args.inputs.container);
var forceConform = args.inputs.forceConform;
if ((0, fileUtils_1.getContainer)(args.inputFileObj._id) !== newContainer) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Set Video Framerate',
Expand Down Expand Up @@ -40,6 +41,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
var desiredFrameRate = Number(args.inputs.framerate);
args.jobLog("Desired framerate: ".concat(desiredFrameRate));
args.variables.ffmpegCommand.streams.forEach(function (stream) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Set Video Resolution',
Expand Down Expand Up @@ -65,6 +66,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
for (var i = 0; i < args.variables.ffmpegCommand.streams.length; i += 1) {
var stream = args.variables.ffmpegCommand.streams[i];
if (stream.codec_type === 'video') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var fileUtils_1 = require("../../../../FlowHelpers/1.0.0/fileUtils");
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
var details = function () { return ({
name: 'Set Video Bitrate',
Expand Down Expand Up @@ -115,6 +116,7 @@ var plugin = function (args) {
var lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
var useInputBitrate = args.inputs.useInputBitrate;
var targetBitratePercent = String(args.inputs.targetBitratePercent);
var fallbackBitrate = String(args.inputs.fallbackBitrate);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.plugin = exports.details = void 0;
var hardwareUtils_1 = require("../../../../FlowHelpers/1.0.0/hardwareUtils");
var flowUtils_1 = require("../../../../FlowHelpers/1.0.0/interfaces/flowUtils");
/* eslint-disable no-param-reassign */
var details = function () { return ({
name: 'Set Video Encoder',
Expand Down Expand Up @@ -217,6 +218,7 @@ var plugin = function (args) { return __awaiter(void 0, void 0, void 0, function
lib = require('../../../../../methods/lib')();
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);
(0, flowUtils_1.checkFfmpegCommandInit)(args);
hardwareDecoding = args.inputs.hardwareDecoding === true;
hardwareType = String(args.inputs.hardwareType);
args.variables.ffmpegCommand.hardwareDecoding = hardwareDecoding;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ var plugin = function (args) {
args.inputs = lib.loadDefaultValues(args.inputs, details);
var container = (0, fileUtils_1.getContainer)(args.inputFileObj._id);
var ffmpegCommand = {
init: true,
inputFiles: [],
streams: JSON.parse(JSON.stringify(args.inputFileObj.ffProbeData.streams)).map(function (stream) { return (__assign(__assign({}, stream), { removed: false, mapArgs: [
'-map',
Expand Down
15 changes: 15 additions & 0 deletions FlowPlugins/FlowHelpers/1.0.0/interfaces/flowUtils.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkFfmpegCommandInit = void 0;
// eslint-disable-next-line import/prefer-default-export
var checkFfmpegCommandInit = function (args) {
var _a, _b;
if (!((_b = (_a = args === null || args === void 0 ? void 0 : args.variables) === null || _a === void 0 ? void 0 : _a.ffmpegCommand) === null || _b === void 0 ? void 0 : _b.init)) {
throw new Error('FFmpeg command plugins not used correctly.'
+ ' Please use the "Begin Command" plugin before using this plugin.'
+ ' Afterwards, use the "Execute" plugin to execute the built FFmpeg command.'
+ ' Once the "Execute" plugin has been used, you need to use a new "Begin Command"'
+ ' plugin to start a new FFmpeg command.');
}
};
exports.checkFfmpegCommandInit = checkFfmpegCommandInit;
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
IpluginInputArgs,
IpluginOutputArgs,
} from '../../../../FlowHelpers/1.0.0/interfaces/interfaces';
import { checkFfmpegCommandInit } from '../../../../FlowHelpers/1.0.0/interfaces/flowUtils';

/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
const details = () :IpluginDetails => ({
Expand Down Expand Up @@ -33,6 +34,8 @@ const plugin = (args:IpluginInputArgs):IpluginOutputArgs => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);

checkFfmpegCommandInit(args);

for (let i = 0; i < args.variables.ffmpegCommand.streams.length; i += 1) {
const stream = args.variables.ffmpegCommand.streams[i];
if (stream.codec_type === 'video') {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { checkFfmpegCommandInit } from '../../../../FlowHelpers/1.0.0/interfaces/flowUtils';
import {
IpluginDetails,
IpluginInputArgs,
Expand Down Expand Up @@ -33,6 +34,8 @@ const plugin = (args:IpluginInputArgs):IpluginOutputArgs => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);

checkFfmpegCommandInit(args);

return {
outputFileObj: args.inputFileObj,
outputNumber: 1,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { checkFfmpegCommandInit } from '../../../../FlowHelpers/1.0.0/interfaces/flowUtils';
import {
IpluginDetails,
IpluginInputArgs,
Expand Down Expand Up @@ -54,6 +55,8 @@ const plugin = (args:IpluginInputArgs):IpluginOutputArgs => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);

checkFfmpegCommandInit(args);

const inputArguments = String(args.inputs.inputArguments);
const outputArguments = String(args.inputs.outputArguments);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { getFfType } from '../../../../FlowHelpers/1.0.0/fileUtils';
import { checkFfmpegCommandInit } from '../../../../FlowHelpers/1.0.0/interfaces/flowUtils';
import {
IffmpegCommandStream,
IpluginDetails,
Expand Down Expand Up @@ -270,6 +271,8 @@ const plugin = (args: IpluginInputArgs): IpluginOutputArgs => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);

checkFfmpegCommandInit(args);

const audioEncoder = String(args.inputs.audioEncoder);
const langTag = String(args.inputs.language).toLowerCase();
const wantedChannelCount = Number(args.inputs.channels);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
} from '../../../../FlowHelpers/1.0.0/interfaces/interfaces';
import { CLI } from '../../../../FlowHelpers/1.0.0/cliUtils';
import { getFileName, getPluginWorkDir } from '../../../../FlowHelpers/1.0.0/fileUtils';
import { checkFfmpegCommandInit } from '../../../../FlowHelpers/1.0.0/interfaces/flowUtils';

/* eslint no-plusplus: ["error", { "allowForLoopAfterthoughts": true }] */
const details = (): IpluginDetails => ({
Expand Down Expand Up @@ -68,6 +69,8 @@ const plugin = async (args: IpluginInputArgs): Promise<IpluginOutputArgs> => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);

checkFfmpegCommandInit(args);

const cliArgs: string[] = [];

cliArgs.push('-y');
Expand Down Expand Up @@ -180,6 +183,9 @@ const plugin = async (args: IpluginInputArgs): Promise<IpluginOutputArgs> => {

args.logOutcome('tSuc');

// eslint-disable-next-line no-param-reassign
args.variables.ffmpegCommand.init = false;

return {
outputFileObj: {
_id: outputFilePath,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { checkFfmpegCommandInit } from '../../../../FlowHelpers/1.0.0/interfaces/flowUtils';
import {
IpluginDetails,
IpluginInputArgs,
Expand Down Expand Up @@ -32,6 +33,8 @@ const plugin = (args:IpluginInputArgs):IpluginOutputArgs => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-param-reassign
args.inputs = lib.loadDefaultValues(args.inputs, details);

checkFfmpegCommandInit(args);

args.variables.ffmpegCommand.streams.forEach((stream) => {
if (stream.codec_type === 'video') {
stream.outputArgs.push('-vf', 'zscale=t=linear:npl=100,format=yuv420p');
Expand Down
Loading