You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FFMpegFileWriter的grab_frame方法时子进程Figure参数报错

问题

需要用复杂模拟生成的帧制作MP4文件,生成时无需显示画面,优先保证代码简洁而非性能。尝试用FFMpegFileWriter搭配grab_frame编写代码时出现报错:FFmpeg无法将"Figure(650x650)"解析为帧率,进而引发子进程调用错误。但FFMpegWriter配合FuncAnimation可正常运行,想知道是setup配置遗漏、安装问题还是存在bug?

代码如下:

fig, ax = plot.subplots(figsize=(6.5, 6.5))

assert(animation.FFMpegFileWriter().isAvailable())
writer = animation.FFMpegFileWriter(fig)
writer.setup(fig, "test1.mp4",224)

with writer.saving(fig,"test1.mp4", dpi=224):
    for i in range(len(frameSeg)):
        PlotFrame(i)
        writer.grab_frame()

# writer.finish()

print("done")

报错信息:

[image2 demuxer @ 0000021fab8c1000] 无法将选项值 "Figure(650x650)" 解析为视频帧率
[image2 demuxer @ 0000021fab8c1000] 设置选项 framerate 的值为 Figure(650x650) 时出错。
[in#0 @ 0000021fab8c1e00] 打开输入时出错:无效参数
打开输入文件 ... AppData\Local\Temp\tmpe19ci2wz\tmp%07d.png 失败。
打开输入文件出错:无效参数

subprocess.CalledProcessError: 命令 '['ffmpeg', '-framerate', 'Figure(650x650)', '-i', 'F:\Users\Kenne.DESKTOP-BT6VROU\AppData\Local\Temp\tmpe19ci2wz\tmp%07d.png', '-loglevel', 'error', '-vcodec', 'h264', '-pix_fmt', 'yuv420p', '-y', 'test1.mp4']' 返回非零退出状态 4294967274。

解决方案
  • 问题根源:参数传递混淆导致的错误。实例化FFMpegFileWriter时传入fig,会让内部错误地将Figure对象当作帧率参数;同时setup方法的第三个参数应为dpi,但你之前的代码逻辑里把帧率的位置填成了dpi值,双重错误导致FFmpeg收到无效的帧率参数。

  • 修复后的代码:

import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots(figsize=(6.5, 6.5))

# 实例化时指定帧率(比如10fps,根据需求调整)
writer = animation.FFMpegFileWriter(fps=10)
with writer.saving(fig, "test1.mp4", dpi=224):
    for i in range(len(frameSeg)):
        PlotFrame(i)  # 假设PlotFrame是你定义的绘图函数
        writer.grab_frame()

print("done")
  • 关键说明:
    1. FFMpegFileWriter的构造函数不需要传入fig,而是通过fps参数指定视频帧率。
    2. writer.saving()上下文管理器会自动处理文件的初始化和收尾,无需手动调用finish()。
    3. FFMpegWriter配合FuncAnimation能正常运行,是因为FuncAnimation会自动完成帧率参数的正确传递,不会出现参数混淆。

内容的提问来源于stack exchange,提问作者GPU Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:52:35