我正在用 c 为大学写一些物理模拟,现在我输出了一系列数百个 png,然后我以快速顺序观看......有没有办法用一些简单的无损编解码器库将它们合并到 c 中的视频?
PS 我正在使用 cairo 图形,并且通常在图形编程方面经验很少
如果您想避免使用外部程序,libavcodec可能是生成视频的最佳方式。它在 C 语言中,并且有很好的文档记录(参见上面的链接)。
关于 Jonas 使用 mencoder 的解决方案的更多文档在这里。
您只是想观看一些 PNG 作为视频?您不需要合并它们:
mplayer -fps 2 mf://*.png
如果您想这样做而不是编写 PNG,那么 ffmpeg 的 libavcodec 中有快速无损编解码器。例如 ffvhuff 或 huffyuv。
或者,如果您不想使用 libavcodec,您可以编写 y4m 原始输出并将其通过管道传输到某些东西。yuv4mpeg 是一个带有帧速率和帧大小的标题,然后是每个帧的未压缩像素。
不完全符合您的要求,但我不会自己动手,我会使用 mencoder:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o output.avi
PS。mencoder 是 MPlayer 的一部分并且是开源的。DS。