nodejs中使用fluent-ffmpeg實現n個webm視頻文件先轉碼在合並


1.引入fluent-ffmpeg
 
var ffmpeg = require('fluent-ffmpeg');
 

2.將n個webm文件重新編碼 ,輸入為“_i.webm”為 “i.webm”

function runFFmpegWebmS(roomId,length) {
    for(var i=0;i<length;i++){
        runFFmpegWebm(roomId,i,length);
    }
}

  

function runFFmpegWebm(roomId,i,length) {
    var fileName1 = path.join(__dirname, 'uploads',''+roomId,'webm','_'+i+'.webm').replace(/\\/g,'/');
    var fileName2 = path.join(__dirname, 'uploads',''+roomId,'webm',i+'.webm').replace(/\\/g,'/');
    ffmpeg(fileName1)
    .output(fileName2)
    .on('end', function() {
        console.log('視頻轉碼Finished processing');
        console.log("i:"+i+",length:"+length)
        if(i==length-1){  //這一步判斷比較關鍵,當最后一個webm文件編碼完成后調用合並的函數
            console.log("視頻轉碼全部完成");
            runFFmpegCombine_Webm(roomId,length);
        }
    })
    .run();
}

  

3.將新生成的n個webm視頻文件合並

function runFFmpegCombine_Webm(roomId,length) {
    var file =path.join(__dirname, 'uploads',''+roomId,'webm','0.webm').replace(/\\/g,'/');
    var outPath = path.join(__dirname, 'uploads',''+roomId,'webm',roomId+'.webm').replace(/\\/g,'/');
    try{
        var proc = ffmpeg(file);
        for(var i=1;i<length;i++){
            proc=proc.input(path.join(__dirname, 'uploads',''+roomId,'webm',i+'.webm').replace(/\\/g,'/'));
        }
        proc.mergeToFile(outPath).on('end', function() {
            console.log('視頻合並成功');
        });
        }catch(err){
        console.log( 'an error occured!',err );
    } 
}

  


免責聲明!

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



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