利用nodejs實現登錄並轉碼視頻(原創)


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.本示例中所作的視頻轉碼僅僅是尺寸的改變,官網上還有更多的轉碼操作,如碼率等等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM