2013-03-07 22 views
0

我正在嘗試爲MJPEG視頻創建RTP數據包。首先,我讀取文件的前5個字節,它給出了幀的長度,然後我讀取返回的大小。在Node.js的ReadSync調用期間長度超出緩衝區錯誤

這裏是我的代碼:

while(totalSizeScanned < totalSize){ 

      var tmp_buf = Buffer(5) 
      fs.readSync(fd,tmp_buf,totalSizeScanned,5); 

      totalSizeScanned += 5; 

      var stringBuffer = tmp_buf.toString("utf-8"); 
      this.total_len = parseInt(stringBuffer, 10); 

      var frame_buf = Buffer(this.total_len); 

      fs.readSync(fd, frame_buf, totalSizeScanned, this.total_len); 
      file_content[frameNo] = frame_buf; 

      frameNo++; 
      totalSizeScanned += this.total_len; 

     } 

這是給我的第二readSync呼叫「長度超出緩衝區」的錯誤。我不明白爲什麼會發生這種情況,因爲我讀的大小應該是緩衝區的大小。我一直在搜索文檔和谷歌約一個小時,但一直沒有找到任何東西。我是Node的新手,所以這可能是微不足道的,但我不確定。

謝謝。

+0

我懷疑這是一個偏移量與位置:無論是在當前位置開始在偏移0( null =當前位置),或者在位置'0'開始的偏移量'totalSizeScanned'偏移處。 – Wrikken 2013-03-07 00:29:02

回答

2

取出的長度字節,在新的緩衝區從0開始,在零添加的位置

fs.readSync(fd, frame_buf, 0, this.total_len-5,null); 
+0

我已經嘗試過。它一直在給出一個「偏移超出界限」的錯誤。 – user1287523 2013-03-07 00:24:12

+0

@ user1287523請參閱編輯 – Hogan 2013-03-07 00:28:03

+0

謝謝。無論我將position參數設置爲null還是將其忽略,我都會得到相同的錯誤。 – user1287523 2013-03-07 00:28:49