我正在使用 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'
]);
命令行参数之间有空格但保持一致,仍然需要分隔。所以
-probesize
和 1024
之间需要有一个空格
更新
如果您想让参数保持一致,请将
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}`);
});
这会将命令回显到控制台...
ffmpeg -probesize 1024 -i rtsp://192.168.1.10:554/11 test.h264
致电
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 ...