0

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;

        }

これにより、2 回目の readSync 呼び出しで「長さがバッファを超えています」というエラーが表示されます。私が読んだサイズはバッファのサイズでなければならないので、なぜこれが起こっているのかわかりません。ドキュメントとグーグルを約1時間検索してきましたが、何も見つかりませんでした。私はノードを初めて使用するので、これは些細なことかもしれませんが、よくわかりません。

ありがとう。

4

1 に答える 1

2

長さのバイトを取り出し、新しいバッファで 0 から開始し、位置に null を追加します

fs.readSync(fd, frame_buf, 0, this.total_len-5,null);
于 2013-03-07T00:22:52.327 に答える