これは、アプリで録音を設定する方法です。
xn::NodeInfoList recordersList;
rc = context.EnumerateProductionTrees(XN_NODE_TYPE_RECORDER, NULL, recordersList);
CHECK_RC(rc, "enumerate recorders");
xn::NodeInfo chosen = *recordersList.Begin();
recorder = new xn::Recorder();
rc = recorder->Create(context, "oni");
CHECK_RC(rc, "create recorder");
rc = context.CreateProductionTree(chosen, *recorder);
CHECK_RC(rc, "create production tree");
rc = recorder->SetDestination(XN_RECORD_MEDIUM_FILE, "KinectLog.oni");
CHECK_RC(rc, "set destination for recording");
rc = recorder->AddNodeToRecording(depthGenerator, XN_CODEC_16Z_EMB_TABLES);
CHECK_RC(rc, "add node to recording");
次にrc = context.WaitAnyUpdateAll();
、1秒間に約30回電話をかけます。すべてが機能し、画面などにKinect入力が表示されます。
KinectLog.oni
すべてがうまくいくように見えますが、結果のサンプルを開こうとすると、次のNiViewer
ようになります。
jan@mbp ~/OpenNI/Samples/Bin/x64-Release $ ./NiViewer ~/devel/k/KinectLog.oni
Open failed: The file is corrupted!
Press any key to continue . . .
何が問題なのですか?