nodejs的出现让前端人员可以使用js打造后台,也许哪天就真的摆脱了对java或者php的依赖了.
今天跟大家分享一个利用nodejs接受前端post请求,并实现视频转码的这样一个例子.视频转码用到的是ffmpeg,nodejs取到表单的参数采用的是目录multiparty;具体实现如下:
1.项目主要文件结构
2.ffmpeg.js文件是启动文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
const express = require(
'express'
);
const path = require(
'path'
);
const multiparty=require(
'multiparty'
);
const ffmpeg=require(
'fluent-ffmpeg'
);
const fs=require(
'fs'
);
const bodyParser = require(
'body-parser'
);
const app=express();
app.use(express.
static
(path.join(__dirname,
'public'
)));
//设置静态文件根路径
app.use(bodyParser.urlencoded({ extended:
false
}));
app.get(
'/'
,
function
(req,res) {
res.sendfile(
'./public/html/login.html'
)
})
app.post(
'/ffuser/login'
,
function
(req,res) {
var
form =
new
multiparty.Form({uploadDir:
'./public/upload/'
});
form.parse(req,
function
(err, fields, files) {
console.log(files);
var
filesTmp = JSON.stringify(files,
null
, 2);
var
inputFile = files.avatar[0];
var
uploadedPath = inputFile.path;
var
dstPath =
'./public/realvideo/'
+ inputFile.originalFilename;
var
exchangePath=
'./public/convert/'
+ inputFile.originalFilename;
fs.rename(uploadedPath, dstPath,
function
(err) {
if
(err) {
console.log(
'rename error: '
+ err);
}
else
{
console.log(
'rename ok'
)
if
(inputFile.originalFilename.split(
'.'
)[1] ==
'MP4'
|| inputFile.originalFilename.split(
'.'
)[1] ==
'mp4'
) {
var
trans =
new
ffmpeg({source: dstPath})
.setFfmpegPath(
'./public/ffmpeg-64/bin/ffmpeg.exe'
)
.withAspect(
'4:3'
)
.withSize(
'1280x960'
)
.applyAutopadding(
true
,
'white'
)
.saveToFile(exchangePath,
function
(retcode, error) {
if
(error) {
console.log(error)
}
else
{
console.log(retcode)
}
})
.on(
'end'
,
function
() {
console.log(
'转码完成!'
)
res.send({code:
'success'
,json:{fields: fields, video:
'/convert/'
+inputFile.originalFilename}});
})
}
}
});
});
})
app.listen(3000,
function
() {
console.log(
'server start'
)
})
|
3.运行ffmpeg.js,并在浏览器地址栏输入 localhost:3000,页面截图如下:
4.填好用户名和密码,选择好需要上传的视频文件后,点击登录
5.操作成功后,视频会先存储在realvideo这个目录下,转码后的视频将会存储在convert这个目录下:
扫描二维码关注公众号,回复:
1771611 查看本文章
6.页面发起的post请求在收到返回参数后,会自动播放返回的视频文件
7.本示例中所作的视频转码仅仅是尺寸的改变,官网上还有更多的转码操作,如码率等等
转载自:https://www.cnblogs.com/Ricky-Huang/p/5724748.html