2013-08-28 70 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); 
}