详解nodejs 使用ffmpeg获取电脑摄像头数据进行rtsp推流

本文介绍如何使用Node.js结合fluent-ffmpeg从电脑摄像头获取数据并进行推流。通过安装fluent-ffmpeg模块,并设置ffmpeg路径,可以实现视频流的实时传输。文章提供了具体的代码示例,包括启动和停止推流的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nodejs 使用fluent-ffmpeg获取电脑摄像头数据进行推流

  • 安装fluent-ffmpeg

    npm install  fluent-ffmpeg
    
  • 设置ffmpeg路径

    FFMPEG_PATH 加入环境变量中
    或者使用Ffmpeg.setFfmpegPath(path) 
    
  • 使用案例

    var outputh = 'rtsp://' + 'ip' + ':' + 'port' + '/' + textname;
    var ffmpegPath = "./ffmpeg_bin/ffmpeg.exe";
    var ffmpeg = require('fluent-ffmpeg');
    command = new ffmpeg('video=HD USB Camera')
        .setFfmpegPath(ffmpegPath)
        .inputOptions('-f dshow')
        .size('800x600')
        .on('start', function(commandLine) {
            console.log("start push......." + commandLine);
            console.log("start command......." + command);
        })
        .on('end', function() {
            console.log("storp push........")
            stopPush();
        })
        .on('error', function(err, stdout, stderr) {
            console.log('error:' + err.message);
            console.log('stdout:' + stdout);
            console.log('stderr:' + stderr);
            stopPush();
        })
        .addOptions([
            // '-preset veryfast',
            '-rtsp_transport tcp',
            '-f rtsp'
        ])
        .pipe(outputh, { end: true });`
    
  • 停止推流

    根据说明使用kill函数。但是我测试的无效,会报错
    
    所以使用不优雅的方式直接使用child_process进行杀掉进程
    
    var child_process = require('child_process');
    var chile = child_process.exec('"taskkill" /F /IM ffmpeg.exe* /T', function(error, stdout, stderr) {
    if (error) {
        console.error(`exec error: ${error}`);
        return;
    }
    console.log(`stdout: ${stdout}`);
    console.log(`stderr: ${stderr}`);
     });
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值