节点使用child_process启动VLC播放器



我有一个POST函数,我试图使用child_process启动VLC播放器。我正在使用最新的Raspbian版本。

router.post('/', function (req, res) {
let spawn = require('child_process').spawn;
let vlc = spawn('vlc');
vlc.stderr.on('data', function(data) {
console.log(data.toString());
});
vlc.on('exit', function(code){
console.log('Exit code: ' + code);
});
res.send({success: true})
});

触发请求后,我收到以下消息:

VLC不应该作为root运行。很抱歉如果需要使用可以使用的实时优先级和/或特权TCP端口vlc包装器(确保它是Set UID根并且不能由运行首先是不受信任的用户)。

由于VLC不能以root身份运行,我在VLC启动脚本中添加了UID参数,现在看起来是这样的:

let vlc = spawn('vlc' ,{uid: 1000});

其中UID:1000是我一直使用的用户的ID。

触发请求后,我在日志中得到另一条消息:

[016f9960]main libvlc错误:无法打开配置文件(/root/.config/vlc/vlcrc):权限被拒绝

主目录不可访问:权限被拒绝

[01762eb0]vlcpulse音频输出错误:PulseAudio服务器连接失败:连接被拒绝

[0176bde8]dbus接口错误:无法连接到D总线会话守护进程:如果没有$DISPLAY,则无法自动启动dbus守护进程用于X11

[0176bde8]主接口错误:没有合适的接口模块[016f9960]主libvlc错误:接口"dbus,none"初始化失败

[0176c7a8]主接口错误:没有合适的接口模块[016f9960]主libvlc错误:接口"全局热键,无"初始化失败

[016f9960]main libvlc:使用默认接口运行vlc。使用"cvlc"在没有接口的情况下使用vlc。

错误:未在环境中设置XDG_RUNTIME_DIR。

[0176c7a8]skins2接口错误:无法初始化OSFactory

[071614e0]主播放列表:播放列表为空

[0176c7a8][cli]lua接口:在主机"*console"上监听。

玩家没有运行。但是,如果我通过ssh运行相同的命令,它就会运行。是什么原因导致节点不运行它?

问题是我的服务器使用运行

节点

我真的尝试了所有的东西,然后当我正要放弃时,我不小心用node命令以正常方式启动了服务器。VLC正在启动,没有任何错误。我不需要在参数中传递任何用户ID。它工作得很好,就像这样:

let spawn = require('child_process').spawn;
let vlc = spawn('vlc');

我真的很好奇为什么nodemon会导致这样的行为。

最新更新