python保存,用python渲染和保存视频文件

本文介绍如何使用Python的Pyglet库生成一系列2D几何对象(如圆形、正方形等)移动的截图,并利用ffmpeg将这些截图合成视频。文章强调了Pyglet的高速性能,并提供了一个无需打开窗口即可生成图像缓冲区的方法。
部署运行你感兴趣的模型镜像

I want to use python to generate a video of some 2d geometric objects (circles, squares, ...) that are moving around.

I suspect the solution could be using a library like pygame, piglet for the render and then save screenshot and append to video file using some other library.

Importantly I need to do this without having a screen/window opened; basically pyagme or piglet should write an image on some buffer instead of screen.

I had some success using matplotlib, but I feel like it is not the most appropriate tool for this project, especially if I want to make the graphics more fancy and want to have something that runs fast.

EDIT:

I ended up using command line tools like ffmpeg

解决方案

If you made a search online and ended up here hoping for a one-liner to do this, I'm afraid you won't find this here. However, this might point you in the right direction.

In pyglet, and most of the GL libraries for Python you won't find a pre-created API to generate video streams, however they do however provide a way to get the raw pixel data of each individual frame.

I'll stick to Pyglet because it's by far the fastest library I've tried over the yers and It's my religion.

pyglet.image.get_buffer_manager().get_color_buffer().save('screenshot.png')

This code is not used to save a specific image, rather it's used to grab the entire window and save it to a file called screenshot.png.

Use this to create a indexed series of screenshots:

frame = 0

def on_draw():

...

pyglet.image.get_buffer_manager().get_color_buffer().save(str(frame)+'.png')

Once you're done running your application simply use any video encoding tool (mencoder, ffmpeg, windows movie maker or w/e) and combine all the stills into a video file.

ffmpeg -f image2 -framerate 25 -pattern_type sequence -start_number 0 -r 3 -i %04d.png -s 720x480 test.avi

And voila, you should have a test.avi video file of your stills.

Now there's better alternatives, such as to pipe the video to ffmpeg each individual frame to save processing time, but to do this you need to interact with ffmpeg right away and there's libraries for this such as https://github.com/kanryu/pipeffmpeg

您可能感兴趣的与本文相关的镜像

GPT-SoVITS

GPT-SoVITS

AI应用

GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值