node ffmpeg混音以及音视频混合处理

ffmpeg 同时被 2 个专栏收录
4 篇文章 0 订阅
2 篇文章 0 订阅

https://www.jianshu.com/p/2a824f13b2af 使用FFmpeg合并音视频

https://www.jianshu.com/p/2a824f13b2af fmpeg混音以及音视频混合处理

http://phpstudy.php.cn/c.php/45618.html  ffmpeg 视频合并 如何保留音频

https://www.cnblogs.com/laien/p/7132951.html  ffmpeg nodejs中使用

http://nodejs.cn/api/child_process.html

 

node执行ffmpeg命令

只需要把ffmpeg.exe放在node执行的目录下,就可以使用node来执行ffmpeg命令。
实例代码:

const child = require('child_process')
child.exec("ffmpeg -i "concat:first.mp3|second.mp3" -acodec copy third.mp3", function(err){
    if (err) {
        console.log(err.message);
        info.message = err.message;
        event.sender.send(data.callback, JSON.stringify(info))
    } else {
        info.flag = true;
        info.message = '音频处理保存成功'
        event.sender.send(data.callback, JSON.stringify(info))
    }
})
--------------------- 
作者:SoGreater 
来源:CSDN 
原文:https://blog.csdn.net/qq_36607860/article/details/86472948 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

1.获取到推流地址
2.进入cmd,输入命令ffmpeg -re -i xxxxx.flv -c copy -f flv "xxxxurl"
其中,
xxxxx.flv为本地视频文件,Sioeye推流需要符合使用的是视频H264,音频ACC编码
"xxxxxrul"为推流地址

 

ffmpe NodeJs中使用

 

var exec = require('child_process').exec;
var Ffmpeg = require('fluent-ffmpeg');
var config = require('../config')
// module.exports  = {
   function generatTsfile (activity,sourceFile) {
        // var source
        // var commandStr = 'ffmpeg -i ';
        // commandStr += config.videodirectory +  videoFile ;
        // commandStr += ' -y -vcodec copy -acodec copy -map 0 -f segment -segment_list ';
        // commandStr +=+ config.videodirectory + ''
        var commandStr = 'ffmpeg -i D:/desktop/testfile/1.flv  -y -vcodec copy -acodec copy -map 0 -f segment -segment_list D:/desktop/testfile/test1.m3u8   -segment_time 10 D:/desktop/testfile/test-%03d.ts'

        var command = Ffmpeg('D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/sourceVideo/1080p_3_2.mp4')
            .save('D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/ts/1080p_3_2-%03d.ts')
            .outputOptions([
                '-y',
            '-vcodec copy',
            '-acodec copy',
            '-map 0',
              '-f segment',
            '-segment_list D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/sourceVideo/1080p_3_2.m3u8',
            '-segment_time 10']
            )

            // .takeScreenshots({ timemarks: [ '00:00:02.000' ],
            //     size: '150x100',
            //     filename:'thumbnail-at-%s-%00i-seconds.jpg'
            // }
            //  , 'D:/desktop/testfile');

        command
            .on('progress', function(info) {
                console.log('progress ' + info.percent + '%');
            })
            .on('filenames', function(filenames) {
                console.log('screenshots are ' + filenames.join(', '));
            })
            .on('error', function(err) {
                console.log('An error occurred: ' + err.message);
            })
            .on('end', function() {
                console.log('Merging finished !');
            })
    }

var num = 0;
function generateImage(i) {

    console.log(i,num++);
    // var commandStr = 'ffmpeg -i D:/desktop/testfile/1.mp4 -f image2 -vf fps=fps=1/2 -q:v 0 D:/desktop/testfile/test-%02d.jpg';
    
    var command = Ffmpeg('D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/ts/1080p_3_2-'+i+'.ts')
        .save('D:/desktop/testfile/454224124c08470a90a9eaa0b3cb885a/123224124c08470a90a9eaa0b3cb6666/thumbnailtmp/1080p_3_2-'+i+'-%02d.jpg')
        .outputOptions([
            '-y',
            '-f image2',
            '-vf fps=fps=1/2',
            '-q:v 0'
        ])
       // .videoFilter('fps=fps=1/2')
       //  .takeScreenshots({
       //       //timemarks: [ '00:00:02.000' ],
       //      size: '150x100',
       //      filename:'thumbnail-at-%s-%00i-seconds.jpg'
       //  }
       //   , 'D:/desktop/testfile');

    command
        .on('progress', function(info) {
            //console.log('progress ' + info.percent + '%');
        })
        .on('filenames', function(filenames) {
            //console.log('screenshots are ' + filenames.join(', '));
        })
        .on('error', function(err) {
            //console.log('An error occurred: ' + err.message);
        })
        .on('end', function() {
            //console.log('Merging finished !');
        })


}
 // generatTsfile()



//
var count = 0;
function generate() {
   // setTimeout(function () {

            var str = count.toString().length === 1 ? '00'+count : '0'+count;
        generateImage(str)
        count ++;
        console.log(count,str);
        if(count<32)
            generate();

    // },10000)
}

generate();





// //切片生成图片
// var exec = require('child_process').exec;
// var commandStr = 'ffmpeg -i D:/desktop/testfile/1.mp4 -f image2 -vf fps=fps=1/2 D:/desktop/testfile/test-%02d.jpg&exit';
// var time = new Date();
// exec(commandStr,function (err,data,data1) {
//     console.log(new Date() - time);
// })


// var tsStr = 'ffmpeg -i D:/desktop/testfile/1.mp4  -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8';
//
//生成切片
// var generalTsStr = 'ffmpeg -i D:/desktop/testfile/1.flv  -y -vcodec copy -acodec copy -map 0 -f segment -segment_list D:/desktop/testfile/test1.m3u8   -segment_time 10 D:/desktop/testfile/test-%03d.ts'
//
// var time = new Date();
// exec(generalTsStr,function (error, stdout, stderr) {
//     console.log(new Date() - time);
// })

// var spawn = require('child_process').spawn;

//Set the path to where FFmpeg is installed
//proc.setFfmpegPath("D:\\ffmpeg-3.0\\vs2013_build\\bin\\ffmpeg.exe"); //I forgot to include "ffmpeg.exe"


// ffmpeg('D:/desktop/testfile/1.mp4')
//     .videoCodec('libx264')
//     .audioCodec('libmp3lame')
//     .size('320x240')
//     .on('error', function(err) {
//         console.log('An error occurred: ' + err.message);
//     })
//     .on('end', function() {
//         console.log('Processing finished !');
//     })
//     .save('D:/desktop/testfile/output.mp4');

// ffmpeg('D:/desktop/testfile/1.mp4')
//     .on('stderr', function(stderrLine) {
//         console.log('Stderr output: ' + stderrLine);
//     })
//     .on('progress', function(progress) {
//         console.log('Processing: ' + progress.percent + '% done');
//     })
//     .on('error', function(err, stdout, stderr) {
//         console.log('Cannot process video: ' + err.message);
//     })
//     .on('end', function(stdout, stderr) {
//         console.log('Transcoding succeeded !');
//     });;;

  // var command = ffmpeg('D:/desktop/testfile/1.mp4')
  //     .audioCodec('libfaac')
  //   .videoCodec('libx264')
  //   .format('mp4');
  //
  // command.clone()
  //   .size('320x200')
  //   .save('D:/desktop/testfile/11.mp4');


// ffmpeg('D:/desktop/testfile/1.mp4')
//     .screenshots({
//         timestamps: [30.5, '50%', '00:10.123'],
//         filename: 'thumbnail-at-%s-seconds.png',
//         folder: 'D:/desktop/testfile/output',
//         size: '320x240'
//     });
// //
  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值