将单个 png 文件转换为 mp4

问题描述

我正在尝试找到一种将单个 png 图像转换为具有指定长度的 mp4 文件方法。在尝试制作更长(多个小时)的视频时,我发现的解决方案缓慢且不可靠。

这是我目前在 Python 3 中的解决方案:

true

基本上相同的图像被附加多次以组成视频,我发现合并非常费力,因此将 fps 设置为 0.1 秒。

这感觉像是错误方法,因此感谢任何解决方

解决方法

你会喜欢 PyAV。它是 ffmpeg 库的适当包装器,而不是您在随机 Python 包中发现的常见 subprocess 杂项。

它有一个示例,其中帧是用自定义的演示时间戳而不是固定的帧速率写入的。由于 ffmpeg 没有在他们自己的文档中明确说明这些事情,数学/用法有点模糊。

基本上你设置了 av.VideoFrame.pts,就是这样。

https://github.com/PyAV-Org/PyAV/blob/main/examples/numpy/generate_video_with_pts.py

请务必理解,帧间隔时间异常长的视频对于某些视频播放器来说可能是一个挑战,至少在尝试搜索而不是按顺序播放时是这样。

OpenCV 不是媒体库。其视频 I/O 功能旨在和设计为方便而不是灵活。