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

利用nodejs实现登录并转码视频(原创)的更多相关文章

  1. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件下载地址: ...

  2. 利用 nodejs 解析 m3u8 格式文件,并下 ts 合并为 mp4

    利用 nodejs 解析 m3u8 格式文件,并下 ts 合并为 mp4 以前看视频的时候,直接找到 video标签,查看视频地址,然后下载下来.. 后来发现,好多 video 标签打开元素审查,如下 ...

  3. SpringBoot2.x整合Prometheus+Grafana【附源码+视频】

    图文并茂,新手入门教程,建议收藏 SpringBoot2.x整合Prometheus+Grafana[附源码+视频] 附源码+视频 目录 工程简介 简介 Prometheus grafana Spri ...

  4. 利用Nodejs快速构建应用原型

    利用Nodejs快速构建应用原型 开发一个应用往往需要快速的构建原型,然后在此基础上设计和改进,前端可能立马能看到效果,但是后端业务逻辑不会那么快,这个时候其实我们需要额只是一些模拟数据,所以不需要真 ...

  5. nodejs:注册登录session出错以及连接Mongodb数据库时Error connecting to database解决方案

    (1)nodejs:注册登录session出错 解决办法: 在app.js 中将var MongoStore =  require(connect-mongo')改为var MongoStore =  ...

  6. 微信小程序使用场景延伸:扫码登录、扫码支付

    微信小程序使用场景延伸:扫码登录.扫码支付 小程序最适合的使用场景有哪些?相比大家能列举出来很多,但这个场景,大家可能多数没想到_^ 笔者团队近期接到了一个PC项目:转转游戏租号PC官网,该项目要求在 ...

  7. 利用QrCode.Net生成二维码 asp.net mvc c#

    利用QrCode.Net生成二维码 asp.net mvc c# 里面介绍了.net的方式及js的方式,还不错. 里面用到的qrcode.net的类库下载地址:https://qrcodenet.co ...

  8. Python3之利用Cookie模拟登录

    Python3之利用Cookie模拟登录 利用Cookie模拟登录步骤: 1.       在浏览器输入http://demo.bxcker.com,输入用户名和密码登录. 2.登录成功点" ...

  9. 忘记秘密利用python模拟登录暴力破解秘密

    忘记秘密利用python模拟登录暴力破解秘密: #encoding=utf-8 import itertools import string import requests def gen_pwd_f ...

随机推荐

  1. 读《UNIX编程艺术》一感

    我记得早在2006年的时候就开始频繁使用awk做文本处理方面的工作,07年的时候周围有人用perl,我还感到很不解,觉得写得很复杂,没有awk one liner 那么方便和神奇.一直在了解awk的具 ...

  2. java.lang.OutOfMemoryError: Java heap space的解决方法

    windows->preferences->Java->Installed JRES->edit->Default VM Arguments添加-Xms256m -Xmx ...

  3. https采集12306(复制)

    package train; import java.io.IOException;import java.security.NoSuchAlgorithmException;import java. ...

  4. Winform打砖块游戏制作step by step第5节---重构代码,利用继承多态

    一 引子 为了让更多的编程初学者,轻松愉快地掌握面向对象的思考方法,对象继承和多态的妙用,故推出此系列随笔,还望大家多多支持. 二 本节内容---重构代码,利用继承多态 1. 主界面截图如下: 2.  ...

  5. OpenMP并行构造的schedule子句详解 (转载)

    原文:http://blog.csdn.net/gengshenghong/article/details/7000979 schedule的语法为: schedule(kind, [chunk_si ...

  6. 188. Best Time to Buy and Sell Stock IV leetcode解题笔记

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  7. 【转】webGL与OpenGL的不同

    原链接 http://www.khronos.org/webgl/wiki/WebGL_and_OpenGL_Differences WebGL and OpenGL Differences     ...

  8. 关于hover

    要想实现a:hover b{} 得到样式的话,a必须是b的父元素

  9. Height Half Values

    public class HeightDemo { /** * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半: * 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? * ...

  10. noip2012-day2-t2

    [问题描述] 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们 ...