Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Node.js中的ReadSync调用期间,长度超出缓冲区错误_Javascript_Node.js_Buffer_Rtp - Fatal编程技术网

Javascript 在Node.js中的ReadSync调用期间,长度超出缓冲区错误

Javascript 在Node.js中的ReadSync调用期间,长度超出缓冲区错误,javascript,node.js,buffer,rtp,Javascript,Node.js,Buffer,Rtp,我正在尝试为MJPEG视频创建RTP数据包。首先,我读取文件的前5个字节,它给出了帧的长度,然后读取返回的大小 这是我的密码: while(totalSizeScanned < totalSize){ var tmp_buf = Buffer(5) fs.readSync(fd,tmp_buf,totalSizeScanned,5); totalSizeScanned += 5;

我正在尝试为MJPEG视频创建RTP数据包。首先,我读取文件的前5个字节,它给出了帧的长度,然后读取返回的大小

这是我的密码:

    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;

        }
while(totalSizeScanned
这在第二次readSync调用中给了我一个“长度超出缓冲区”错误。我不明白为什么会发生这种情况,因为我读取的大小应该是缓冲区的大小。我已经在文档和谷歌上搜索了大约一个小时,但没有找到任何东西。我是Node的新手,所以这可能很琐碎,但我不确定


谢谢。

取出长度的字节,在新缓冲区中从0开始,并为位置添加null

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

我以前试过。它给出了一个“偏移量超出范围”的错误。谢谢。无论是将位置参数设置为null还是忽略它,我都会遇到相同的错误。如果给定偏移量,则将偏移量设置为0超出范围error@Wrikken由于这一行
fs.readSync(fd,tmp_buf,totalSizeScanned,5)啊,这些字节包含在帧的长度中,没有加前缀吗?我怀疑这是一个偏移量与位置的关系:要么从当前位置的偏移量0开始(null=当前位置),要么从偏移量
totalSizeScanned
从位置
0
开始的偏移量。