我是一名自学成才的 Python 程序员,从事一个爱好项目,但我遇到了一些困难,想解决我认为潜在的 XY 问题。
我的应用程序接受音频文件的输入(将其转换为 wav)并以 numpy 数组的形式生成音频(90x90、RGB、帧)的视觉表示。我曾经使用 open-cv 将这些帧保存到视频文件中,然后使用 ffmpeg 缩放视频并在顶部添加(原始,非 wav)音频,但这意味着等到应用程序完成播放文件. 我希望能够播放音频并在生成帧时同步显示它们。我的生成代码最多占用 16ms 帧 (60fps) 的 8ms,因此我有合理数量的周期可供使用。
根据我的研究,我发现 SDL 是最适合高速显示帧的工具,并且通过蛮力像素编辑成功地制作了一个简单的系统来“及时”显示帧。我还发现 SDL 可以播放音频,甚至似乎我可以通过回调函数将它与视频同步。但是,作为一个绝对非 c 的程序员,我不知道如何最好地显示帧,因为直接分配像素不是最安全或最快的,我想在显示帧时缩放帧。我也不知道如何最好地将 numpy 数组有效地转换为纹理,以及如何最好地控制我的生成代码、音频和视频帧的同步性。
我并不是专门寻找任何这些问题的答案,尽管我们将不胜感激,但我只是确保这是一个合理的前进方向。在这种情况下,SDL/pysdl2 与 numpy 相结合是否合适?还是这对 python 的要求太高了?