FFmpeg 命令在终端中运行,但不在带有 TMux 的脚本中运行

FFmpeg 命令在终端中运行,但不在带有 TMux 的脚本中运行

我第一次运行 FFmpeg 命令时出现错误:

“输出文件 #0 不包含任何流”

…但我可以看到 Tux 会话并连接到它。

然后添加了 FFmpeg 可执行文件的完整路径并降低了 FFmpeg 命令的复杂性,但现在什么都没有发生,甚至没有创建 tmux 会话。

sh rec.sh

以下是 的内容rec.sh

#!/bin/bash
tmux new-session -d /usr/bin/ffmpeg -f pulse -i 0 -acodec libmpelame out.mp3

答案1

通常,当您在 Bash 脚本中运行 FFmpeg 时,-nostdin应该使用该选项。因此,shell 脚本中的命令将更改为:

tmux new-session -d /usr/bin/ffmpeg -nostdin -f pulse -i 0 -acodec libmp3lame out.mp3

处理此问题的另一种类似方法是附加< /dev/null到命令中,如下所示:

tmux new-session -d /usr/bin/ffmpeg -f pulse -i 0 -acodec libmp3lame out.mp3 < /dev/null

尝试其中任何一种,并使用有效的方法,如解释的那样FFmpeg 文档-stdin;粗体强调部分是我所加的:

启用标准输入上的交互。除非使用标准输入作为输入,否则默认启用。要明确禁用交互,您需要指定-nostdin

禁用标准输入上的交互很有用,例如,如果 ffmpeg 位于后台进程组中。大致可以达到相同的结果,ffmpeg ... < /dev/null但是需要一个外壳。

相关内容