Ursina引擎如何将渲染帧保存为图片或视频?
在Ursina引擎中保存渲染帧为图片序列或视频的方法
一、保存为图片序列
Ursina内置了截图API,通过帧更新回调可以实现自动捕获序列帧:
- 基础逐帧保存实现
from ursina import * import time app = Ursina() def save_frame(): # 用时间戳命名避免文件覆盖 frame_name = f"frame_{time.time()}.png" # 直接保存到项目目录,不弹出选择对话框 application.screenshot(name=frame_name, default_filename=False) # 每帧触发保存 def update(): save_frame() # 测试场景 Cube() Sky() app.run()
- 优化:控制保存频率
如果不需要逐帧保存,可以设置间隔帧数:
frame_counter = 0 save_interval = 5 # 每5帧保存一次 def update(): global frame_counter frame_counter += 1 if frame_counter % save_interval == 0: application.screenshot(name=f"frame_{frame_counter}.png", default_filename=False)
二、保存为视频
Ursina没有直接导出视频的内置功能,需通过「图片序列转视频」的方式实现:
- 先按上述方法生成完整的图片序列
- 使用第三方工具转视频:
- 用
ffmpeg命令行工具(高效便捷):ffmpeg -framerate 30 -i frame_%d.png -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4 - 也可以用Adobe Premiere、剪映等可视化工具导入序列帧后导出
- 用
额外提示
- 调用
application.screenshot()时,设置default_filename=False可跳过保存对话框,直接按指定名称存储 - 若需要高清输出,可先调整窗口分辨率:
window.size = (1920, 1080) - 用
ffmpeg转视频时,确保图片序列是连续数字命名,否则无法正常识别
内容的提问来源于stack exchange,提问作者Saikat
相关产品推荐
相关产品推荐

