{"id":3951,"date":"2021-10-22T22:59:25","date_gmt":"2021-10-22T14:59:25","guid":{"rendered":"http:\/\/123.57.164.21\/?p=3951"},"modified":"2021-10-22T22:59:25","modified_gmt":"2021-10-22T14:59:25","slug":"docker-node-%e8%b0%83%e7%94%a8ffmpeg%e8%bd%ac%e6%8d%a2%e8%a7%86%e9%a2%91","status":"publish","type":"post","link":"https:\/\/92it.top\/?p=3951","title":{"rendered":"Docker node \u8c03\u7528ffmpeg\u8f6c\u6362\u89c6\u9891"},"content":{"rendered":"\n<p>\u5728Docker node\u4e2d\u901a\u8fc7\u4f7f\u7528ffmpeg-static\u6765\u8fdb\u884c\u89c6\u9891\u8f6c\u6362<\/p>\n\n\n\n<p>package.json<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n  \"name\": \"videoTransform\",\n  \"version\": \"1.0.0\",\n  \"description\": \"videoTransform\",\n  \"main\": \"server.js\",\n  \"scripts\": {\n    \"start\": \"node server.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.16.4\",\n    \"express-handlebars\": \"^3.1.0\",\n    \"ffmpeg\": \"0.0.4\",\n    \"fluent-ffmpeg\": \"^2.1.2\",\n    \"ibm-cos-sdk\": \"^1.7.0\",\n    \"ibm_db\": \"^2.6.3\",\n    \"node-schedule\": \"^1.3.2\",\n    \"request\": \"^2.88.2\",\n    \"ffmpeg-static\": \"^2.3.0\"\n  }\n}\n<\/pre>\n\n\n\n<p>Dockerfile<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#\u8bbe\u7f6e\u57fa\u7840\u955c\u50cf,\u5982\u679c\u672c\u5730\u6ca1\u6709\u8be5\u955c\u50cf\uff0c\u4f1a\u4eceDocker.io\u670d\u52a1\u5668pull\u955c\u50cf\n\nFROM node\n\n#\u521b\u5efaapp\u76ee\u5f55,\u4fdd\u5b58\u6211\u4eec\u7684\u4ee3\u7801\nRUN mkdir -p \/var\/videoTransform\n#\u8bbe\u7f6e\u5de5\u4f5c\u76ee\u5f55\nWORKDIR \/var\/videoTransform\n\n#\u590d\u5236\u6240\u6709\u6587\u4ef6\u5230 \u5de5\u4f5c\u76ee\u5f55\u3002\nCOPY . \/var\/videoTransform\n\nRUN npm install\n\n#\u66b4\u9732container\u7684\u7aef\u53e3\nEXPOSE 9000\n\n#\u8fd0\u884c\u547d\u4ee4\nCMD [\"npm\", \"start\"]<\/pre>\n\n\n\n<p>server.js<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar express = require(\"express\");\nvar path = require(\"path\");\nvar request = require('request');\nvar app = express();\nconst schedule = require('node-schedule');\nconst fs = require('fs');\n\n\nvar ffmpeg = require('fluent-ffmpeg');\nconst ffmpeg_static = require('ffmpeg-static');\n\nfunction transformVideo(videoName) {\n  console.log(\"\u30d3\u30c7\u30aa\u8ee2\u6362\u958b\u59cb. \u30d3\u30c7\u30aa:\" + videoName + \" Time:\" + Date());\n  var p = new Promise((resolve, reject) => {\n    ffmpeg('.\/' + videoName)\n      .setFfmpegPath(ffmpeg_static.path)\n      \/\/ set audio codec\n      .videoCodec('libx264')\n      .on('end', function () {\n        console.log(\"\u30d3\u30c7\u30aa\u8ee2\u6362\u5b8c\u4e86. \u30d3\u30c7\u30aa:\" + videoName + \" Time:\" + Date());\n        resolve(videoName);\n      })\n      .on('error', function (err) {\n        console.log(\"\u30d3\u30c7\u30aa\u8ee2\u6362\u30a8\u30e9\u30fc:\" + videoName + \" Time:\" + Date() + \" \u30a8\u30e9\u30fc:\" + err.message);\n        reject(err.message);\n      })\n      \/\/ save to file\n      .save('.\/H264_' + videoName);\n  });\n  return p;\n}\n\n\n\n\n\n\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5728Docker node\u4e2d\u901a\u8fc7\u4f7f\u7528ffmpeg-static\u6765\u8fdb\u884c\u89c6\u9891\u8f6c\u6362 package.json Dock [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"_links":{"self":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/3951"}],"collection":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3951"}],"version-history":[{"count":2,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/3951\/revisions"}],"predecessor-version":[{"id":3953,"href":"https:\/\/92it.top\/index.php?rest_route=\/wp\/v2\/posts\/3951\/revisions\/3953"}],"wp:attachment":[{"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/92it.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}