kinectkinect-sdkkinect.toolbox

Initializing Kinect Recorder error


When I attempt to run my skeletal tracking code to test out the following line of code I have added in, it crashes with an error.

    void sensor_AllFramesReady(object sender, AllFramesReadyEventArgs e)
    {
        if (closing)
        {
            return;
        }

        //Get a skeleton
        Skeleton first = GetFirstSkeleton(e);

        if (first == null)
        {
            return;
        }


        using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
        {
            //if (skeletonFrame == null)
            //{
            //    return;
            //}
            this.recordStream = new MemoryStream(100);
            KinectRecorder Recorder = new KinectRecorder(KinectRecordOptions.Skeletons, recordStream);
            if (skeletonFrame != null)
            {
                this.Recorder.Record(skeletonFrame);
            }
            //StartRecord
           // Skeleton[] skeletonData = this.Recorder.Record(skeletonFrame);

        }
 // some more stuff
 }

I am calling the Record function available in the Kinect Toolbox.

The error is: System.NullReferenceException was unhandled ....... Message=Object reference not set to an instance of an object. ..... Source=SkeletalTracking

Update: If I have moved the initialization into the same function as the call of the recorder.


Solution

  • Based on the code you've posted, you never initialize your KinectRecorder.

    this.Recorder.Record(skeletonFrame); // I get an error after the RGB camera view freezes
    

    ... would produce a null pointer, because Recorder was never initialized. Unless you've left that part out of your code example here. You can do it at the time you declare it, or later if you prefer.

    KienctRecorder Recorder = new KinectRecorder(options, stream);
    

    options need to be set up for your appropriate KinectRecordOptions. stream is your output Stream.