我将PowerShell与Livestreamer(及其新的对应Streamlink)结合使用,根据正在播放的内容从各种服务流式传输。我制作的剧本很好用;唯一的问题是当我希望停止查看流时关闭PowerShell窗口经常会让Livestreamer和我的媒体播放器都运行,迫使我以特定的顺序退出(因为脚本会以其他方式循环)。
关于Livestreamer的更多信息:这是一种常用的工具 与YouTube和YouTube等多种多样的流媒体服务进行通信 Twitch.tv。它捕获输出(通常是RTMP)并将其传输到a 媒体播放器而不是强迫用户依赖基于网络的 技术。我写的脚本本质上是一个"包装器"对于 Livestreamer,用于检查外部JSON以确保流 在线然后推出Livestreamer。 Livestreamer将关闭一次 流停止,由脚本捕获;然后脚本循环 回到"在线"检查并从头开始。就是这样 脚本可以继续;然而,这也意味着,尽快 Livestreamer程序关闭,脚本将其视为流 离线并再次循环回来。出于这个原因,我希望脚本能够尽可能地干扰Livestreamer的工作。 Livestreamer的手册本身表示,当程序本身退出时,它试图关闭媒体播放器,但此功能非常不可靠。
我解决此问题的最佳方法是捕获PowerShell控制台窗口的关闭并执行响应命令。我已经调查了PowerShell的trap
命令,但发现它想要与Unix相比(文档很少) - 我不相信以下伪代码有任何现实生活中的对应物: / p>
trap [System.Management.WindowClosed]
{taskkill /f /im iris.exe; exit}
我担心我的任务有点复杂,因为依赖于第三方程序而不是内部PowerShell功能以及我希望特意捕获" X"按钮而不是 CTRL + C 。