从服务器端脚本的数据创建视频
Creating a video from data of server-side script
我的计划是在可在我的网页上显示的视频中显示服务器端脚本生成的数据。到目前为止,我的方法如下:
- C脚本中的三维整数数组用于累积图像数据。尺寸是宽度、宽度和颜色(R、G 和 B)。
- 数组被写入 ppm 文件。
- 下一张图累积写入等等
- 使用 ffmpeg 脚本将 ppm 文件合并为 mp4 视频。
基本上这是可行的,当然越快越好。我将不胜感激对根本不同方法的建议以及对以下细节的帮助:
- 是否有像 ppm 这样简单的文件格式,它使用十六进制代码而不是三元组来表示颜色?这将减少我的数组的大小以及写入操作的数量。
- 如果我使用 fprintf 操作将每个值打印到文件而不是将行累积到一个字符串中,我会浪费很多时间吗?或者编译器是否优化了这种写入序列?
根据视频所需的长度,动画 gif 可能比视频格式容易得多。您可能想看看 github https://extrapixel.github.io/gif-animation/
上的 gif 动画库
其他(更多与 C 相关的)问题:
fprintf() 进行 formatted 输出,这肯定比二进制输出慢,因此 ppm(文本)格式并不特别以速度着称。您可能需要寻找二进制格式(例如上面的 .gif)和该格式的匹配库。应该会快很多。
fprintf() buffers 输出,因此,除了增加额外的开销外,将数据累积到一个字符串中不会太多更快。
编辑:鉴于您提到的大小和 运行 时间,您最好的选择可能是写入 ffmpeg 能够消化的简单二进制像素格式 - .XWD 或 .PNG 可能是一个不错的选择,因为有可用的经过良好测试的库,允许您绘制到设备相关的位图并将您绘制的设备相关位图存储到此类文件中。
二进制格式只需要存储比基于 ASCII 的格式少得多的数据 - 假设一个字节是二进制字节,至少两个(根据格式可能更多)ASCII。而且转换需要时间....
我的计划是在可在我的网页上显示的视频中显示服务器端脚本生成的数据。到目前为止,我的方法如下:
- C脚本中的三维整数数组用于累积图像数据。尺寸是宽度、宽度和颜色(R、G 和 B)。
- 数组被写入 ppm 文件。
- 下一张图累积写入等等
- 使用 ffmpeg 脚本将 ppm 文件合并为 mp4 视频。
基本上这是可行的,当然越快越好。我将不胜感激对根本不同方法的建议以及对以下细节的帮助:
- 是否有像 ppm 这样简单的文件格式,它使用十六进制代码而不是三元组来表示颜色?这将减少我的数组的大小以及写入操作的数量。
- 如果我使用 fprintf 操作将每个值打印到文件而不是将行累积到一个字符串中,我会浪费很多时间吗?或者编译器是否优化了这种写入序列?
根据视频所需的长度,动画 gif 可能比视频格式容易得多。您可能想看看 github https://extrapixel.github.io/gif-animation/
上的 gif 动画库其他(更多与 C 相关的)问题: fprintf() 进行 formatted 输出,这肯定比二进制输出慢,因此 ppm(文本)格式并不特别以速度着称。您可能需要寻找二进制格式(例如上面的 .gif)和该格式的匹配库。应该会快很多。
fprintf() buffers 输出,因此,除了增加额外的开销外,将数据累积到一个字符串中不会太多更快。
编辑:鉴于您提到的大小和 运行 时间,您最好的选择可能是写入 ffmpeg 能够消化的简单二进制像素格式 - .XWD 或 .PNG 可能是一个不错的选择,因为有可用的经过良好测试的库,允许您绘制到设备相关的位图并将您绘制的设备相关位图存储到此类文件中。
二进制格式只需要存储比基于 ASCII 的格式少得多的数据 - 假设一个字节是二进制字节,至少两个(根据格式可能更多)ASCII。而且转换需要时间....