NEWS
[Gelöst] ffmpeg Error: spawn EACCES JS-Adapter
-
Hi Zusammen,
ich möchte eigentlich Screenshots einer mp4 Datei per Javascript erstellen und wollte dafür die Screenshots Funktion von ffmpeg verwenden.
Problem ist das ich es allerdings nicht zum laufen bringe da ich auf einen Error: spawn EACCES laufe und ich es bisher nicht schaffe diesen zu beheben.Ich habe im Javascript Adapter fluemt-ffmpeg, ffprobe und ffmpeg als zusätzlich npm Module in der Zwischenzeit schon angegeben. Am Anfang hatte ich das Problem das er auf den Fehler gelaufen ist das er ffmpeg und ffprobe nicht gefunden hat. Das konnte ich dann beheben indem ich mit setFfmpegPath und setFfprobePath die Pfade zu den Installationen gesetzt habe. Und jetzt laufe ich aber wie gesagt auf den EACCES Fehler.
Mein Skript sieht momentan so aus:
const ffmpeg = require('fluent-ffmpeg'); ffmpeg.setFfmpegPath('/opt/iobroker/node_modules/iobroker.javascript/node_modules/ffmpeg'); ffmpeg.setFfprobePath('/opt/iobroker/node_modules/iobroker.javascript/node_modules/ffprobe'); ffmpeg('/opt/iobroker/temp/cam/stamp.mp4') .on('end', function() { console.log('Screenshots taken'); }) .on('error', function(err) { console.error('Läuft auf Fehler: ' + err); }) .screenshots({ // Will take screenshots at 20%, 40%, 60% and 80% of the video count: 4, folder: '/opt/iobroker/temp/cam' });
und das Log sieht so aus:
avascript.0 2019-08-17 12:42:03.063 error at ContextifyScript.Script.runInContext (vm.js:59:29) javascript.0 2019-08-17 12:42:03.063 error at script.js.onlyTests.Test_Screenshot_FFMPEG:21:2 javascript.0 2019-08-17 12:42:03.063 error at FfmpegCommand.proto.takeScreenshots.proto.thumbnail.proto.thumbnails.proto.screenshot.proto.screenshots (/opt/iobroker/node_modules/iobroker.javascript/node_modules/fluent-ffmpeg/lib/recipes.js javascript.0 2019-08-17 12:42:03.063 error at Object.awaitable(waterfall) [as waterfall] (/opt/iobroker/node_modules/iobroker.javascript/node_modules/async/dist/async.js:208:32) javascript.0 2019-08-17 12:42:03.063 error at Object.waterfall (/opt/iobroker/node_modules/iobroker.javascript/node_modules/async/dist/async.js:4589:9) javascript.0 2019-08-17 12:42:03.063 error at nextTask (/opt/iobroker/node_modules/iobroker.javascript/node_modules/async/dist/async.js:4578:27) javascript.0 2019-08-17 12:42:03.063 error at computeTimemarks (/opt/iobroker/node_modules/iobroker.javascript/node_modules/fluent-ffmpeg/lib/recipes.js:175:11) javascript.0 2019-08-17 12:42:03.063 error at getMetadata (/opt/iobroker/node_modules/iobroker.javascript/node_modules/fluent-ffmpeg/lib/recipes.js:160:14) javascript.0 2019-08-17 12:42:03.063 error at FfmpegCommand.proto.ffprobe (/opt/iobroker/node_modules/iobroker.javascript/node_modules/fluent-ffmpeg/lib/ffprobe.js:141:10) javascript.0 2019-08-17 12:42:03.063 error at FfmpegCommand.proto._getFfprobePath (/opt/iobroker/node_modules/iobroker.javascript/node_modules/fluent-ffmpeg/lib/capabilities.js:144:14) javascript.0 2019-08-17 12:42:03.063 error at /opt/iobroker/node_modules/iobroker.javascript/node_modules/fluent-ffmpeg/lib/ffprobe.js:155:21 javascript.0 2019-08-17 12:42:03.063 error at exports.spawn (child_process.js:508:9) javascript.0 2019-08-17 12:42:03.063 error at ChildProcess.spawn (internal/child_process.js:313:11) javascript.0 2019-08-17 12:42:03.063 error Error: spawn EACCES javascript.0 2019-08-17 12:42:03.063 error ^ javascript.0 2019-08-17 12:42:03.063 error throw errnoException(err, 'spawn'); javascript.0 2019-08-17 12:42:03.063 error script.js.onlyTests.Test_Screenshot_FFMPEG: internal/child_process.js:313
Hat dir mir jemand eine Idee wo ich meinen Fehler habe?
Danke und Grüße
McD_HRTS -
Als Info.
Habe das Problem gelöst indem ich ffmpeg und ffprobe installiert habe über die beiden:
https://www.npmjs.com/package/@ffmpeg-installer/ffmpeg
https://www.npmjs.com/package/@ffprobe-installer/ffprobeund dann das Skript entsprechend angepasst:
const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path; const ffprobePath = require('@ffprobe-installer/ffprobe').path; const ffmpeg = require('fluent-ffmpeg'); ffmpeg.setFfmpegPath(ffmpegPath); ffmpeg.setFfprobePath(ffprobePath); ffmpeg('/opt/iobroker/temp/cam/stamp.mp4') .on('end', function() { console.log('Screenshots taken'); }) .on('error', function(err) { console.error('Läuft auf Fehler: ' + err); }) .screenshots({ count: 12, folder: '/opt/iobroker/temp/cam' });