【问题标题】:fread, fwrite for big size video file (about 180MB)fread, fwrite 用于大尺寸视频文件(约 180MB)
【发布时间】:2013-08-28 12:43:30
【问题描述】:

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

这些是我的问题:

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

  2. 这个程序需要作为:

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

由于公司的安全规则,我无法上传我的代码。任何提示将不胜感激。

【问题讨论】:

    标签: c video fwrite fread


    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多