我目前遇到了一个非常奇怪的问题。
我正在尝试使用NodeJS子进程启动VLC,然后使用套接字访问它的远程控制(RC)接口。连接到此套接字时会出现此问题。我收到错误,连接被拒绝了。端口已打开,允许应用程序来自防火墙。
棘手的部分是,当我使用此接口手动打开VLC,并且只尝试连接套接字时,它可以工作。我假设在生成过程中的某些东西使得事情不同导致错误。
以下是我尝试运行的代码:
var spawn = require('child_process').spawn;
var file_dir = "V:\\TEST\\";
var files = ["Ika.mkv", "Nami.mkv", "Azu.mkv"];
var player = spawn("C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe", ['--intf="rc"', '--rc-host="localhost:3000"', '--fullscreen', file_dir + files[0]]);
var net = require('net');
var client = net.createConnection(3000, "localhost");
client.on('connect', function() {
console.log('connected to VLC on port 3000');
client.write("add " + file_dir + files[1] + "\n");
client.write("enqueue " + file_dir + files[2] + "\n");
client.write("help" + "\n");
});
client.on('data', function(data) {
console.log(data.toString());
});
client.on('end', function() {
console.log('disconnected from server');
});
我在两台机器上试过这个代码,我遇到了同样的问题。
您可能会问一些问题: 什么操作系统? Windows 8.1
为什么我需要使用套接字? VLC没有任何可从标准输入或标准输出读写的接口。我尝试了很多不同的选择,他们什么都不做。
我想要建立什么? 具有Web界面的Media Center。我正在使用VLC作为媒体播放器。
您是否无法使用内置的HTTP界面? 它不适合我想要建立的东西。我想要更好地控制我的媒体管理。
欢迎任何和所有帮助。谢谢。
答案 0 :(得分:1)
原因是一些奇怪的原因并非所有命令行参数都传递给VLC实例。
我通过将RC接口的实例化和将RC模式设置为localhost:3000
来解决它这是产生过程的新行
var player = spawn("C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe", ['-I rc --rc-host=\"localhost:3000\"','--fullscreen', file_dir + files[0]]);
这样可行,只有它还会创建一个RC控制台窗口,但我可以忍受它。
感谢@ jfriend00帮助解决这个奇怪的谜团。