Node.js教程 利用Node.js实现登录并转码视频
沉沙 2018-10-19 来源 : 阅读 1215 评论 0

摘要:本篇教程介绍了Node.js教程 利用Node.js实现登录并转码视频,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

本篇教程介绍了Node.js教程 利用Node.js实现登录并转码视频,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

<

 nodejs的出现让前端人员可以使用js打造后台,也许哪天就真的摆脱了对java或者php的依赖了.
今天跟大家分享一个利用nodejs接受前端post请求,并实现视频转码的这样一个例子.视频转码用到的是ffmpeg,nodejs取到表单的参数采用的是目录multiparty;具体实现如下:
1.项目主要文件结构

2.ffmpeg.js文件是启动文件

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这个目录下:

6.页面发起的post请求在收到返回参数后,会自动播放返回的视频文件

7.本示例中所作的视频转码仅仅是尺寸的改变,官网上还有更多的转码操作,如码率等等    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程