在Docker node中通过使用ffmpeg-static来进行视频转换
package.json
{
"name": "videoTransform",
"version": "1.0.0",
"description": "videoTransform",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.4",
"express-handlebars": "^3.1.0",
"ffmpeg": "0.0.4",
"fluent-ffmpeg": "^2.1.2",
"ibm-cos-sdk": "^1.7.0",
"ibm_db": "^2.6.3",
"node-schedule": "^1.3.2",
"request": "^2.88.2",
"ffmpeg-static": "^2.3.0"
}
}
Dockerfile
#设置基础镜像,如果本地没有该镜像,会从Docker.io服务器pull镜像 FROM node #创建app目录,保存我们的代码 RUN mkdir -p /var/videoTransform #设置工作目录 WORKDIR /var/videoTransform #复制所有文件到 工作目录。 COPY . /var/videoTransform RUN npm install #暴露container的端口 EXPOSE 9000 #运行命令 CMD ["npm", "start"]
server.js
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var express = require("express");
var path = require("path");
var request = require('request');
var app = express();
const schedule = require('node-schedule');
const fs = require('fs');
var ffmpeg = require('fluent-ffmpeg');
const ffmpeg_static = require('ffmpeg-static');
function transformVideo(videoName) {
console.log("ビデオ転换開始. ビデオ:" + videoName + " Time:" + Date());
var p = new Promise((resolve, reject) => {
ffmpeg('./' + videoName)
.setFfmpegPath(ffmpeg_static.path)
// set audio codec
.videoCodec('libx264')
.on('end', function () {
console.log("ビデオ転换完了. ビデオ:" + videoName + " Time:" + Date());
resolve(videoName);
})
.on('error', function (err) {
console.log("ビデオ転换エラー:" + videoName + " Time:" + Date() + " エラー:" + err.message);
reject(err.message);
})
// save to file
.save('./H264_' + videoName);
});
return p;
}