From 2f15e54d7ff6dfbdef7f97a74bef7d76709ca180 Mon Sep 17 00:00:00 2001 From: Koushik Dutta Date: Thu, 30 Dec 2021 17:43:32 -0800 Subject: [PATCH] server: switch ffmpeg binary --- external/scrypted-ffmpeg | 2 +- server/package-lock.json | 166 ++++++++----------------------------- server/package.json | 2 +- server/src/plugin/media.ts | 4 +- 4 files changed, 40 insertions(+), 134 deletions(-) diff --git a/external/scrypted-ffmpeg b/external/scrypted-ffmpeg index ff39cb8a8..f1e370a27 160000 --- a/external/scrypted-ffmpeg +++ b/external/scrypted-ffmpeg @@ -1 +1 @@ -Subproject commit ff39cb8a8015bcf2f4989548ef1bcbc4c22b247f +Subproject commit f1e370a27a25058c15da1ed31a2dd83e1b9162e4 diff --git a/server/package-lock.json b/server/package-lock.json index a1a925997..5bd47dd9b 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.116", "license": "ISC", "dependencies": { + "@scrypted/ffmpeg": "^1.0.2", "@scrypted/sdk": "^0.0.133", "adm-zip": "^0.5.3", "axios": "^0.21.1", @@ -61,7 +62,6 @@ }, "optionalDependencies": { "@koush/wrtc": "^0.5.2", - "ffmpeg-for-homebridge": "^0.0.9", "mdns": "^2.7.2" } }, @@ -671,6 +671,23 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@scrypted/ffmpeg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@scrypted/ffmpeg/-/ffmpeg-1.0.2.tgz", + "integrity": "sha512-eBe5h2Fr+4+hvUYxRoHogoTO6MV86Q2uJqkgh1Tc54XipHfpDhU9bVrwWqF0qCf3gN6BV6VLXu6zd8BXqt9MyA==", + "hasInstallScript": true, + "dependencies": { + "axios": "^0.24.0" + } + }, + "node_modules/@scrypted/ffmpeg/node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, "node_modules/@scrypted/sdk": { "version": "0.0.133", "resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.133.tgz", @@ -1784,18 +1801,6 @@ "node": ">=0.10" } }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "optional": true, - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/deferred-leveldown": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", @@ -1873,15 +1878,6 @@ "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "optional": true }, - "node_modules/dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "optional": true, - "engines": { - "node": ">=10" - } - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -2391,20 +2387,6 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "node_modules/ffmpeg-for-homebridge": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/ffmpeg-for-homebridge/-/ffmpeg-for-homebridge-0.0.9.tgz", - "integrity": "sha512-HmUatYfEf0dI7kbSh2vGLkJCuY7YLJODPn64Ng/Fj8YjpPbrLFGQBzvdQFBUC6RgGpvqEdlgZNQR8N9wEZuziQ==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "detect-libc": "^1.0.3", - "dotenv": "^8.2.0", - "mkdirp": "^1.0.3", - "simple-get": "^3.1.0", - "tar": "^6.0.1" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -3297,18 +3279,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "optional": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -4249,37 +4219,6 @@ "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "devOptional": true }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, - "node_modules/simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "optional": true, - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -5591,6 +5530,24 @@ "tar": "^6.1.11" } }, + "@scrypted/ffmpeg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@scrypted/ffmpeg/-/ffmpeg-1.0.2.tgz", + "integrity": "sha512-eBe5h2Fr+4+hvUYxRoHogoTO6MV86Q2uJqkgh1Tc54XipHfpDhU9bVrwWqF0qCf3gN6BV6VLXu6zd8BXqt9MyA==", + "requires": { + "axios": "^0.24.0" + }, + "dependencies": { + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "requires": { + "follow-redirects": "^1.14.4" + } + } + } + }, "@scrypted/sdk": { "version": "0.0.133", "resolved": "https://registry.npmjs.org/@scrypted/sdk/-/sdk-0.0.133.tgz", @@ -6525,15 +6482,6 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, - "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "optional": true, - "requires": { - "mimic-response": "^2.0.0" - } - }, "deferred-leveldown": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", @@ -6595,12 +6543,6 @@ } } }, - "dotenv": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", - "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", - "optional": true - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -6945,19 +6887,6 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "ffmpeg-for-homebridge": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/ffmpeg-for-homebridge/-/ffmpeg-for-homebridge-0.0.9.tgz", - "integrity": "sha512-HmUatYfEf0dI7kbSh2vGLkJCuY7YLJODPn64Ng/Fj8YjpPbrLFGQBzvdQFBUC6RgGpvqEdlgZNQR8N9wEZuziQ==", - "optional": true, - "requires": { - "detect-libc": "^1.0.3", - "dotenv": "^8.2.0", - "mkdirp": "^1.0.3", - "simple-get": "^3.1.0", - "tar": "^6.0.1" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -7619,12 +7548,6 @@ "mime-db": "1.50.0" } }, - "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "optional": true - }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -8363,23 +8286,6 @@ "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==", "devOptional": true }, - "simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "optional": true - }, - "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", - "optional": true, - "requires": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", diff --git a/server/package.json b/server/package.json index cbed8a0e9..1717908ad 100644 --- a/server/package.json +++ b/server/package.json @@ -3,6 +3,7 @@ "version": "0.0.116", "description": "", "dependencies": { + "@scrypted/ffmpeg": "^1.0.2", "@scrypted/sdk": "^0.0.133", "adm-zip": "^0.5.3", "axios": "^0.21.1", @@ -31,7 +32,6 @@ }, "optionalDependencies": { "@koush/wrtc": "^0.5.2", - "ffmpeg-for-homebridge": "^0.0.9", "mdns": "^2.7.2" }, "devDependencies": { diff --git a/server/src/plugin/media.ts b/server/src/plugin/media.ts index 4a462d37d..f2b3f8d53 100644 --- a/server/src/plugin/media.ts +++ b/server/src/plugin/media.ts @@ -7,7 +7,7 @@ import { once } from 'events'; import fs from 'fs'; import tmp from 'tmp'; import os from 'os'; -import pathToFfmpeg from 'ffmpeg-for-homebridge'; +import { getInstalledFfmpeg } from '@scrypted/ffmpeg' import { ffmpegLogInitialOutput } from "../media-helpers"; function addBuiltins(console: Console, mediaManager: MediaManager) { @@ -133,7 +133,7 @@ export abstract class MediaManagerBase implements MediaManager { return f; const defaultPath = os.platform() === 'win32' ? 'ffmpeg.exe' : 'ffmpeg'; - return pathToFfmpeg || defaultPath; + return getInstalledFfmpeg() || defaultPath; } getConverters(): BufferConverter[] {