Python subprocess.Popen + ffmpeg 中断终端输入

标签 python python-3.x ffmpeg subprocess popen

我正在编写一个模块来从视频中创建随机屏幕截图并使用 subprocess.Popen并行运行多个命令,但这会导致终端在 python 程序完成运行后拒绝显示任何输入。但它仍然接受从键盘给出的大多数输入,只是不显示它。
仅当我键入 reset命令终端开始正常工作
这发生在带有 putty 和其他 ssh 客户端的 ssh 上,甚至在 windows 上带有 powershell 的 ssh 并直接在带有 VNC 的终端上运行
但是没有 ssh 直接在 windows 上运行相同的命令 ssh 工作正常并且输入是可见的
这是正在发生的事情的 gif 示例
enter image description here
和复制它的代码

#!/usr/bin/env python3.8
from subprocess import Popen

def create_screenshots():

    commands = ['ffmpeg -hide_banner -loglevel panic -ss 329  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.329.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 312  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.312.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 533  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.533.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 444  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.444.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 411  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.411.frame.png"',
                'ffmpeg -hide_banner -loglevel panic -ss 413  -i "/home/user/file.mkv" -y -vframes 1   "/home/user/file.413.frame.png"']
    screenshot_files = []
    processes = [Popen(command, shell=True) for command in commands]
    for process in processes:
        process.wait()
    
    return screenshot_files


create_screenshots()

最佳答案

经过数周的搜索,在我发布问题后终于找到了答案
这个答案就是我想要的
https://stackoverflow.com/a/59148094
不确定是否有更好的方法来使用 Popen 处理此问题,但添加 -nostdin ffmpeg 命令的标志修复了我遇到的问题

关于Python subprocess.Popen + ffmpeg 中断终端输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65329483/

相关文章:

python - 匹配字符串末尾的模式?

python - 限制类变量的修改,新实例除外

python - 如何在 Hangman 游戏中通过一次猜测激活多个字母?

ffmpeg - 在 .ts 文件调整大小时维护 PTS

Android - 使用 com.netcompss.loader.LoadJNI 连接 2 视频

python - 服务器日志记录 - 在数据库或日志文件中?

python - 将所有零移动到列表的末尾,同时单独留下 False

ffmpeg(webm)不尊重请求的比特率

Python 等效于 MySQL "Left Join"两个元组列表

python - 优化代码以检查列表元素是否唯一