fread,fwrite为大尺寸视频文件(约180MB)

时间:2013-08-28 12:43:30

标签: c video fwrite fread

我想读取视频文件并保存为二进制文件并再次写为视频文件。 我测试了180MB视频。我使用了fread函数,它发生了分段错误,因为视频的数组大小很小。

这些是我的问题:

  1. 我使用160 * 1024字节的char数组。 char数组的最大大小是多少?我怎么能解决这个问题?

  2. 这个程序需要像以下一样工作:

    • 读取128字节的视频 - >加密 - >写128字节
    • 读取下一个128字节 - >加密 - >写到下一个。
  3. 由于公司的安全规则,我无法上传我的代码。任何提示都将不胜感激。

1 个答案:

答案 0 :(得分: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);
}