循环保存,该怎么解决
循环保存我想实现如下功能:从网络接收实时的wav数据,把接收到的数据实时保存成音频WAV文件。这些都已经实现
循环保存
我想实现如下功能:
从网络接收实时的wav数据,把接收到的数据实时保存成音频WAV文件。这些都已经实现了。
如果我想只保存最后2小时的数据为WAV文件该怎么实现,请达人指点。
谢谢!
[解决办法]
文件都有创建时间、等信息的 你判断一下
或者做一个记录文件,里面记录所有文件是生成的时间,文件名字
保存的时候按照时间排序来操作
[解决办法]
放到一个20M的队列里,到结束时保存。
[解决办法]
存到数据库最好了
[解决办法]
[解决办法]文件用读写打开,然后用fseek不行吗?
[解决办法]没有这么简单吧,音频还有格式索引的问题呢
[解决办法]要删除的话,两个方案
1.建一数据结构,以块为单位,用顺序文件方式,结构中放一删除标记,类似于:
struct {
int deleteID;
byte date[1024];
};
但这样生成的WAVE文件,是自己的格式,最终要转换一下。
2.每次重新生成文件,将原文件COPY过来,这个效率低些。
如果能写一个链表式的文件,当然最好,但过于复杂。
[解决办法]建立两个文件A,B循环保存最近两小时的数据和前两小时的数据,
从A开始保存
A写满了两小时就往B里面写
B写满了2小时把A删掉重新写A
如此循环
这样就可以保证最近两小时的数据肯定在 A,B中
当需要提取 查询数据的时候,就返回当前整个文件 + 另一个文件的尾部
比如 COPY 到文件 C
[解决办法]1,用filewrite在文件尾追加写入1M,现在文件是21M
2,重新创建一个新文件,写入原文件从头偏移1M开始到文件尾,新文件20M