2013-08-28 89 views
0

我想要读取视频文件并保存为二进制文件并再次作为视频文件进行写入。我测试了180MB视频。我使用了fread函数,因为视频的数组大小很小,所以发生分段错误。fread,用于大尺寸视频文件的fwrite(大约180MB)

那些是我的问题:

  1. 我用160个* 1024字节的字符数组。 char数组的最大大小是多少?我如何解决这个问题?

  2. 这个方案需要为工作:

    • 读取128个字节的视频 - >加密 - >写128字节
    • 下一个读取128个字节 - >加密 - >写入下一个。

我不能上传,因为公司的安全规则,我的代码。任何提示将不胜感激。

回答

1

第一使用fseek()SEEK_END,然后使用ftell()来确定该文件的大小,之后与malloc()分配所需要的存储器和将数据写入该存储器。

如果我正确理解你,你不需要分配这么多的内存,但只有128字节。

char buf[128]; 
while(/* condition */) 
{ 
    ret = fread(buf, sizeof buf, 1, fp_in); 
    encrypt(buf); 
    ret = fwrite(buf, sizeof buf, 1, fp_out); 
}