从 child_process.spawn 获取完整的命令行字符串

Get full command-line string from child_process.spawn

我正在使用 child_process.spawn() 生成一个进程。如何查看执行的确切命令行(包括传递给 spawn 函数的所有命令行参数)?

这是我的示例,但它不起作用:

var s = require('child_process');
var p = s.spawn('ffmpeg', ['-probesize 1024', '-i "rtsp://192.168.1.10:554/11"', 'test.h264']);

当我捕获 stderr 时,我收到一条消息“无法识别的选项 'probesize 1024'。但是,如果我从命令行 运行 ffmpeg,它工作正常。所以我需要确切地了解如何命令行选项在发送到 FFMPEG 之前被破坏以进行调试。

谢谢

试试看

var p = s.spawn('ffmpeg', [
    '-probesize',
    '1024',
    '-i',
    'rtsp://192.168.1.10:554/11',
    'test.h264'
]);

命令行参数之间有 space 但连贯,仍然需要分开。所以 -probesize1024

之间需要一个 space

更新

如果您想将连贯的参数放在一起,请将 shell: true 添加到选项对象:

var p = s.spawn('ffmpeg',
    [
        '-probesize 1024',
        '-i "rtsp://192.168.1.10:554/11"',
        'test.h264'
    ],
    {
        shell: true
    }
);

老问题我知道...但我有一个想法,可能会回答 OP 的问题

const cp = require('child_process');

var sp = cp.spawn( 'cmd', [ '/C' , 'echo', 'ffmpeg', 
    '-probesize',
    '1024',
    '-i',
    'rtsp://192.168.1.10:554/11',
    'test.h264'
]);

sp.stdout.on( "data" , (d) => {
     console.log( `${d}`);
});

这会将 cmd 回显到控制台...

ffmpeg -probesize 1024 -i rtsp://192.168.1.10:554/11 test.h264