Skip to main content

图片放映视频生成

开源python音乐视频About 4 min

提供音乐,以及图片生成一个图片播放的视频。

介绍

对video_maker的重构, 使用pygame进行图像的绘制.
并对结构进行调整, 更好的封装,继承.

功能

pygame简单使用

下述程序需要指定环境,需要在运行前指定环境参数. 建议使用test配置. 修改部分参数即可.

绘制图形

  1. 各种图形绘制

  2. 示例程序: draw_shape.py
    aaa

  3. 绘制函数图像
    示例程序: draw_trace.py
    default

清屏与不清屏

  1. 不清屏会显示历史位置
    示例程序: bubble_test.py
    default

  2. 清屏只显示当前位置
    示例程序: bubble_test.py
    default

font的使用

  1. 使用透明度进行叠加
    示例程序: test_alpha.py
    default

  2. 使用字体,以及位置设定
    示例程序: test_font.py
    default

粒子效果

随机泡泡

示例程序: bubble_test.py

随机碰撞泡泡

示例程序: bubble_test.py
default

下落粒子

示例程序: simple_test.py
这个程序为你演示实际生成粒子, 以及粒子动画的底层逻辑.
default

烟花效果

示例程序: upfirework_test.py
default

下面的程序是对上面的简化。
示例程序: upfirework_test2.py
default

粒子数据预生成

示例程序: compute_test.py
当粒子数量较多时, 实时粒子生成展示的方式会出现卡顿, 因此使用预生成粒子数据的方式。

粒子的装载方式与上述装载方式相同, 只是最后展示调用的方法不同, 实际调用show_compute.

通过display_context中的is_compute可以控制是否使用预生成方式

歌词爬取

  1. 获取网易云上的歌词
    示例程序: request_music.py
    NetEaseRequest需要歌曲id作为参数.
    search_lyric方法会返回两个集合, 一个是原始歌词, 另一个是翻译.
    default

  2. 歌词分割,将比较长的歌词分成固定长度的,切分为多行:
    示例程序: test_split.py
    default

图像处理

将图像对齐到指定大小

自动将图像补充高度或者宽度,补充的内容会进行模糊化处理。

示例程序: test.py
default

音乐可视化

音乐频谱柱状图

示例程序: test2.py
default

音乐频谱环绕圆形

示例程序: test.py
default

main

main.py 是程序入口,组合了多个元素。运行截图如下:
default
default

一些总结

  1. 系统自动去装载程序命令指定的环境,如果没有则更具env.py中的默认值加载环境参数。
  2. PygameDisplay可以提供一个视图,当需要展示一些动态元素的时候,使用它非常方便。
  3. 需要给PygameDisplay提供play_time参数,指定展示时间。
  4. PygameDisplayadd_element方法,允许添加动态元素。元素需要继承BaseElement
  5. PygameDisplayshow方法,即可播放。

关于粒子数据预生成

有两种方案:

  1. 使用pygame动态生成方式, 但是时间序列提前生成. 代码中根据当前时间参数进行粒子数据的生成和存储.
    这种方式和原始动态生成有很多代码需要兼容.
  2. 使用particle/compute包下的代码提前生成粒子数据.

动态粒子都是用particle/compute包下的代码.
最初的动态粒子使用生成时间

issue

1. 使用sprite进行粒子轨迹计算不知为啥碰撞粒子不会碰撞了

2. 生成视频时长不对. 而且无法录音(可以后期为mp4添加音乐)

end

\T_T/ a gift for touhouer.

What do you think?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v3.0.0-alpha.10