【发布时间】:2019-08-06 12:34:07
【问题描述】:
我在节点应用程序中使用 fluent-ffmpeg。从屏幕/相机录制到 mp4 文件。想要一个服务器请求开始,另一个请求停止记录(链接到一个网络界面 - 测试一些技术,以便以后用它制作一个电子应用程序)。
启动很好,但不知道如何停止。
这是要启动(在 MacOS 上运行)的代码:
recordingProcessVideo = ffmpeg(`${screenID}:none`)
.inputFormat('avfoundation')
.native()
.videoFilters(`crop=${width}:${height}:${x}:${y}`)
.save(filePath);
这就是我认为会阻止它围绕该主题进行文档和阅读的方法:
recordingProcessVideo.kill('SIGINT');
但是,当我调用此命令时,服务器退出并显示以下模棱两可的消息:
code ELIFECYCLE
errno 1
此外,生成的视频文件不会像在完成之前退出一样打开。从文档和人们所写的内容来看,似乎无法解决问题,启动和停止记录器应该是制作过程,然后在准备好时将其杀死。任何人都知道正确的方法 - 一直在寻找年龄但找不到任何答案。
使用 Node v10.15.2 和 Ffmpeg 版本 V92718-g092cb17983 在 MacOS 10.14.3 上运行。
感谢您的帮助。
【问题讨论】:
-
你为什么专门使用'SIGINT'信号?没有它的行为是否相同(默认为“SIGKILL”)?
-
@TGrif 是的,它必须是“SIGINT”。 'SIGKILL' - 根据文档 - 将终止进程。 'SIGINT' 将告诉进程优雅地停止并完成其任务。应该与在终端中按 CTRL-C 相同,这会发出“SIGINT”。将
q传递给终端的旧技术已被弃用,应改用SIGINT。您也可以传递其他信号,这将暂停任务并恢复它,而不是杀死它。 -
很高兴知道。当我想杀死一个进程时,我总是尝试“不那么优雅的时尚”......感谢
.on(event)的提醒。
标签: node.js macos express ffmpeg screen-recording