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

问题描述 投票:0回答:3

我正在使用 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 以进行调试。

谢谢

node.js child-process spawn
3个回答
3
投票

尝试

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

命令行参数之间有空格但保持一致,仍然需要分隔。所以

-probesize
1024

之间需要有一个空格

更新

如果您想让参数保持一致,请将

shell: true
添加到选项对象中:

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

0
投票

我知道的老问题......但我有一个想法,这可能会回答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}`);
});

这会将命令回显到控制台...

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

0
投票

致电

spawn

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

打印出正在运行的进程列表:

console.log(cp.spawnSync("ps").stdout.toString());

这将打印一个简短的进程列表,包括损坏的命令行选项:

58432 ttys008    0:00.01 ffmpeg -loglevel 32 ...
© www.soinside.com 2019 - 2024. All rights reserved.