首页 > 解决方案 > 子进程未创建 ffmpeg 命令的输出文件

问题描述

我正在尝试运行一个 ffmpeg 命令来记录我的屏幕并在 python 中创建一个记录的 .mp4 文件。该命令在我的 shell 中运行时有效,但在我使用子进程在 Python 脚本中运行时无效。

问题是使用子进程运行它时,不会创建 output.mp4 文件。

这是命令: timeout 10 ffmpeg -video_size 1920x1080 -framerate 60 -f x11grab -i :0.0+0,0 -f alsa -ac 2 -i pulse -acodec aac -strict experimental output.mp4

这是python代码:

os.chdir('/home/user/Desktop/myProject/')

subprocess.run('timeout 5 ffmpeg -video_size 1920x1080 -framerate 60 -f x11grab -i :0.0+0,0 -f alsa -ac 2 -i pulse -acodec aac -strict experimental out.mp4')

是否需要添加额外的配置以便子进程可以写入输出文件?

标签: pythonffmpegsubprocess

解决方案


timeout您可以使用此处-t发布的选项来代替使用。

添加-t 00:00:05参数,并删除timeout

subprocess.run('ffmpeg -video_size 1920x1080 -framerate 60 -f x11grab -i :0.0+0,0 -f alsa -ac 2 -i pulse -acodec aac -strict experimental -t 00:00:05 out.mp4')

timeout我认为使用命令参数比使用终止进程更优雅。


推荐阅读