【发布时间】:2012-03-24 07:35:25
【问题描述】:
我正在编写一个 c++ 库,该库使用 libcurl 从云服务器获取并返回图像数据或视频数据。我已经开始编写一些测试代码,但仍然坚持设计 API,因为我不确定处理这些媒体文件的最佳方法是什么。将它作为二进制数据存储在 char/string 变量中似乎可行,但我想知道如果文件太大,这是否会占用太多 RAM 内存。我是新手,所以请提出解决方案。
【问题讨论】:
-
您应该研究“流式传输”解决方案。本质上,如果您的函数可以一次对一大块数据进行操作,那么您只需将当前正在处理的少数数据块存储在内存中。下载时,一个块可以是一个缓冲区,它被传入的数据填满,并在它满时被写入磁盘。如果你这样做,你也可以为播放做类似的事情。
-
而不是将其存储在磁盘上?