【发布时间】:2018-05-30 19:08:07
【问题描述】:
我有一个由电话系统调用的 bash 脚本,它从 URL 获取一些音频,然后(使用 ffmpeg、mplayer 等)将其通过管道传回应用程序。该文件可以有多个被调用的 URL,因此如果第一个说离线或给出 404,它将转到下一行。
我有一个问题,有时服务器会生成内容但没有音频。在这种情况下,我想杀死 ffmpeg、mplayer 等的当前 PID,以便脚本继续运行。
我无法将它放在前台并获取最后一个 PID,因为一旦它在前台运行,媒体就不再通过管道传输到调用它的应用程序。我不能在开始时使用 exec ,因为如果我随后向 PID 发出终止命令,那么脚本就会死掉,这是我不想要的。
脚本如下所示:
#!/bin/bash
/usr/bin/ffmpeg -i 'http://1.1.1.1/soft_music' -vn -ar 8000 -ac 1 -f s16le -
/usr/bin/ffmpeg -i 'http://2.2.2.2/soft_music' -vn -ar 8000 -ac 1 -f s16le -
我假设我需要添加一些东西来记录当前运行的 ffmpeg 命令的 pid,以便我的外部脚本可以获取它并杀死它。完成后,它将转到下一行并尝试来自 2.2.2.2 的下一个流
【问题讨论】:
-
@mrflash818 我不能那样做。正如我所提到的,它会将当前进程置于后台,因此应用程序不再从 ffmpeg 获取输出
-
投票结束为 太宽泛 :“请编辑问题以将其限制为具有足够详细信息的特定问题以确定适当的答案。避免一次提出多个不同的问题. 请参阅How to Ask page 以帮助澄清这个问题。”请阅读 stackoverflow.com/help/on-topic 、 stackoverflow.com/help/dont-ask 、 stackoverflow.com/help/mcve 并在此处发布更多问题之前使用 tour。祝你好运。