我正在开发一个小GUI来通过浏览器与mpsyt
进行交互。我写了这个剧本:
<?php
file_put_contents("running.txt", true);
$cwd = '/var/www/html';
$pipes = array();
$descriptors = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "w"));
$process = proc_open("sudo mpsyt", $descriptors, $pipes, $cwd);
$info = proc_get_status($process);
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
$terminate = false;
while (!$terminate) {
$command = file_get_contents("command.txt");
if ($command !== "") {
if ($command == "terminate") {
$terminate = true;
}
if ($command == "pause") {
fwrite($pipes[0], " "); //<---HERE
} else {
fwrite($pipes[0], $command);
}
fflush($pipes[0]);
file_put_contents("command.txt", "");
}
if (($txt = stream_get_contents($pipes[1])) != "") {
$txt = preg_replace('#\R+#', '</p><p>', $txt);
file_put_contents("content.txt", $txt);
}
usleep(100000);
}
file_put_contents("content.txt", "");
fclose($pipe[0]);
fclose($pipe[1]);
proc_close($process);
file_put_contents("running.txt", false);
问题是mpsyt
需要按spacebar
才能暂停一首歌。如何使用fwrite()
(或其他)模拟此操作?
谷歌搜索,我找到了这个线程(同样的问题):
https://github.com/mps-youtube/mps-youtube/issues/568
有这个广告:
https://github.com/mpv-player/mpv/commit/a037f7b
有没有办法绕过这种情况? 提前致谢!
P.S。我还尝试发送SIGINT
信号(如果您在播放歌曲时按Ctrl-C
,它将停止播放)但似乎该过程忽略了它。