【问题标题】:ffmpeg won't stop encoding, even with -shortest commandffmpeg 不会停止编码,即使使用 -shortest 命令
【发布时间】:2017-10-01 14:20:11
【问题描述】:

我遇到了 ffmpeg 停止编码过程的问题,并且在 Internet 上搜索并没有找到可行的解决方案。我通过Python的子进程模块在Linux中调用ffmpeg,如下:

mergeFiles = subprocess.Popen("ffmpeg -i /home/pi/Video/video.mov -i /home/pi/Audio/test.wav -acodec copy -vcodec copy -map 0:v -map 1:a -shortest /home/pi/Final/output.mkv", shell=True)

命令提示符正在等待我用“ctrl-c”手动结束编码过程,但我无法使用键盘来终止编码。我只是希望它完成后停止。几秒钟后,我什至尝试使用 Python 中的 mergeFiles.kill() ,但这甚至都行不通。救命!

编辑:如果我不清楚,我的意思是没有错误,ffmpeg 根本不会继续,直到我点击“ctrl-c”。我只是希望它在完成后停止编码。这是我的命令提示符的样子:

它只是在等我按“ctrl-c”

【问题讨论】:

  • 您使用的是来自 Libav 的旧的、伪造的、伪造的“ffmpeg”。
  • 真的吗?我该如何解决这个问题?
  • 我不知道您运行的是哪个版本的 Rasbian(如果您使用的是该版本),但您可以使用来自 jessie-backports 的 ffmpeg。或者尝试从 johnvansickle.com/ffmpeg 构建 armhf 下次请复制并粘贴所有控制台文本,而不是制作不完整的文本图像。
  • 我正在运行 Jessie 版本的 Raspbian。我想我没有意识到我使用的是假版本的 ffmpeg,因为有一次我的工作正常。我的意思是我让 ffmpeg 在正常完成编码过程的同时很好地合并我的文件。然后突然 ffmpeg 不会让我在不点击“ctrl-c”的情况下结束编码。我意识到这是模糊的,我无法详细说明,因为我不知道为什么它突然停止正确编码。至于控制台文本,我只是运行了我输入的代码,这就是响应。我现在将得到那个 armhf 版本。
  • 我在直播时遇到同样的错误,ffmpeg 仍处于“侦听模式”进行编码,但流已关闭,进程将永远处于执行状态。

标签: python linux ffmpeg raspberry-pi subprocess


【解决方案1】:

当文件/home/pi/Final/output.mkv 已经存在时,ffmpeg 要求您覆盖该文件并且什么都不做。

您可以通过'-y' 标志进行覆盖。

【讨论】:

  • 我的代码设置为在合并文件之前删除“Final”文件夹中的任何内容,因此它不会要求我覆盖任何内容,只是不会自动完成编码。我遇到了ffmpeg要求我覆盖文件的错误,但是现在发生的事情不一样了。
  • ...然后调试“发生了什么”:)
  • 对不起,我以为我在原始帖子中很清楚。当我运行 ffmpeg 命令时,它正在等待我点击“ctrl-c”来结束编码,例如this。没有“click a/y/n”类型错误。它根本不会完成编码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 2018-08-23
  • 2018-06-20
  • 1970-01-01
  • 2015-10-23
  • 2021-02-06
  • 1970-01-01
相关资源
最近更新 更多