cut video to clips and then merge clips
-
-
Save hapham103/43ab379f95cdec202fb36eb6de78b276 to your computer and use it in GitHub Desktop.
cut video to clips and then merge clips
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[{"id":"77de1242.7f835c","type":"function-npm","z":"2f73cdd.dbeac32","name":"proccess clips","func":"var base64 = require('file-base64');\nvar ffmpeg = require('fluent-ffmpeg');\nlet videoUrl = flow.get('videoUrl');\nlet videoClone = ('videoClone.mp4');\nvar fileExt = '.mp4';\nvar series = msg.payload;\nvar i = 0;\nvar len = series.length;\n\nfunction generateVideoCore(from, to) {\n return new Promise(function(resolve, reject) {\n generateVideov2(from, to).then(function() {\n if (i === 0) {\n mergeVideos(['test' + fileExt], 'output' + fileExt).then(function () {\n cloneVideo('output' + fileExt, 'tmp' + fileExt).then(function () {\n resolve('ok');\n })\n });\n } else {\n mergeVideos(['tmp' + fileExt, 'test' + fileExt], 'output' + fileExt).then(function () {\n cloneVideo('output' + fileExt, 'tmp' + fileExt).then(function () {\n resolve('ok');\n })\n });\n }\n });\n });\n}\n\n\nfunction generateVideov2(from, to) {\n return new Promise(function(resolve, reject) {\n var formatFrom = new Date(from).toISOString().substr(11, 8);\n var duration = (to - from) / 1000;\n\n ffmpeg(videoClone) //./sos_4-16_anadarko.mp4\n .setStartTime(formatFrom)\n .setDuration(duration)\n .output('test' + fileExt)\n\n .on('end', function(err) { \n if(!err) {\n resolve('ok');\n } \n })\n .on('error', function(err){\n reject('error');\n }).run();\n });\n}\n\nfunction mergeVideos(videoNames, videoOut) {\n return new Promise(function(resolve, reject) {\n var mergedVideo = ffmpeg();\n videoNames.forEach(function(videoName){\n mergedVideo = mergedVideo.addInput(videoName);\n });\n mergedVideo.mergeToFile(videoOut, '/tmp/')\n .on('end', function() {\n node.error('merged');\n resolve('ok');\n })\n .on('error', function(err) {\n reject('err.message');\n });\n });\n}\n\nfunction cloneVideo(videoIn, videoOut) {\n return new Promise(function(resolve, reject) {\n ffmpeg(videoIn) //output.mp4\n .clone()\n .save(videoOut) //tmp.mp4\n .on('end', function() {\n resolve('ok');\n })\n .on('error', function(err) {\n reject('err.message');\n });\n });\n}\n\nfunction recursive(from, to) {\n node.error('merging');\n generateVideoCore(from, to).then(function (data) {\n i++;\n if (i <= len - 1) {\n recursive(series[i].startTimeMs, series[i].stopTimeMs);\n } else {\n base64.encode('output' + fileExt, function(err, base64String) {\n msg.payload = base64String;\n flow.set('video', base64String);\n node.send(msg);\n });\n }\n });\n}\ncloneVideo(videoUrl, videoClone).then(()=>{\n recursive(series[i].startTimeMs, series[i].stopTimeMs);\n})\n","outputs":1,"noerr":0,"x":404.0173645019531,"y":326.0103940963745,"wires":[["ae623b1b.3aeb58","2e62b79f.d8afb8"]]}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment