{"id":21644547,"url":"https://github.com/samsung/kv2streamer","last_synced_at":"2025-04-11T18:25:14.369Z","repository":{"id":20924546,"uuid":"24212604","full_name":"Samsung/kv2streamer","owner":"Samsung","description":"kv2streamer is a library that allows developers to access the new Kinect V2 sensor data and tracking capabilities from non-windows OS. It provides a server-side application that can stream out Kinect V2 data to multiple client-side applications accessing the client-side API running on non-windows OS over LAN. ","archived":false,"fork":false,"pushed_at":"2023-04-07T10:21:27.000Z","size":1804,"stargazers_count":52,"open_issues_count":5,"forks_count":19,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-11T18:25:09.710Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Samsung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-19T02:03:27.000Z","updated_at":"2024-03-19T12:02:12.000Z","dependencies_parsed_at":"2022-08-26T17:52:06.507Z","dependency_job_id":null,"html_url":"https://github.com/Samsung/kv2streamer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samsung%2Fkv2streamer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samsung%2Fkv2streamer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samsung%2Fkv2streamer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samsung%2Fkv2streamer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Samsung","download_url":"https://codeload.github.com/Samsung/kv2streamer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248456380,"owners_count":21106607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-25T05:40:51.131Z","updated_at":"2025-04-11T18:25:14.346Z","avatar_url":"https://github.com/Samsung.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KV2Streamer\n\nKinect V2 Streamer (KV2Streamer) is a library that allows developers to access the new Kinect V2 sensor data and tracking capabilities from a non-Windows OS. \n\nKV2Streamer provides both a server-side application (KV2Server) that can stream out Kinect V2 data, including tracking data, to multiple client-side applications accessing the client-side API (KV2Client) running on non-Windows OS over LAN.\n\n---\n## 1. KV2Server\n\nKV2Streamer provides the server-side application that retrieves data from the Kinect sensor and streams it out to some defined multicast IP.\n\nUnlike it's client-side counterpart, KV2Server is an application on its own.\nOnce it is build, you can run the executable from the terminal by supplying \na multicast IP argument which will be used to identify the server.\n\nHowever, you have to run the application from the gstreamer bin directory.\n\nIn summary:\n\n1. Build the application using Visual Studio (see instructions below)\n2. Open the command prompt.\n3. Change directory:\t`$ cd C:\\gstreamer\\1.0\\x86\\bin`\n4. Run the executable: \t`$ [executable path] \u003cmulticast-IP\u003e`, \n\tfor example:`$ C:\\Users\\demo\\projects\\kv2streamer\\server\\kv2server_VS12\\Debug\\kv2server_application.exe 224.1.1.1`\n\n\n### 1.1 How To Build KV2Server\n\nFollow the steps below to build and run the kv2streamer server application. It is assumed that you have installed\nthe Kinect SDK which you can find here: https://www.microsoft.com/en-us/download/details.aspx?id=44561\n\n1. Install gstreamer from http://gstreamer.freedesktop.org/data/pkg/windows/:  \n    gstreamer-1.0-devel-x86-1.4.0.msi  \n    gstreamer-1.0-x86-1.4.0.msi\n\n2. Install boost: http://www.boost.org/users/history/version_1_56_0.html\n\n3. Open the Visual Studio Solution file in /server/kv2server_VS12\nnow and try building. If doesn't work, see below:\n\nNote: The following instructions should have already been setup in the project you cloned, but\nin case you need to set things up yourself:\n\n4. Add ALL .cpp files contained in thes following directories to your project (right click on project \u003e Add \u003e Existing Item):  \n\t\n  kv2server-applications/kv2server   \n\tkv2server-applications/oscpack  (BUT EXCLUDE kv2server-applications/oscpack/ip/posix)\t   \n\tkv2streamer-lib/gst-wrapper   \n\tkv2streamer-lib/oscpack-wrapper   \n\n5. Configuration Properties \u003e C/C++ \u003e General \u003e Additional Include Directories:  \n\n\tC:\\Program Files\\boost\\boost_1_56_0   \n\t$(KINECTSDK20_DIR)\\inc   \n\t$(GSTREAMER_1_0_ROOT_X86)\\include\\gstreamer-1.0   \n\t$(GSTREAMER_1_0_ROOT_X86)\\include\\glib-2.0   \n\t$(GSTREAMER_1_0_ROOT_X86)\\lib\\glib-2.0\\include   \n\t$(SolutionDir)\\..   \n\t$(SolutionDir)\\..\\kv2server   \n\t$(SolutionDir)\\..\\oscpack   \n\t$(SolutionDir)\\..\\..\\kv2streamer-lib   \n\n6. Configuration Properties \u003e VC++ Directories \u003e Library Directories:  \n\t\n  C:\\Program Files\\boost\\boost_1_56_0\\stage\\lib   \n\t$(KINECTSDK20_DIR)\\lib\\x86   \n\t$(GSTREAMER_1_0_ROOT_X86)\\lib   \n\n7. Configuration Properties \u003e Linker \u003e Input:   \n\t\n  Ws2_32.lib   \n\twinmm.lib   \n\tkinect20.lib   \n\tgstreamer-1.0.lib   \n\tglib-2.0.lib   \n\tgobject-2.0.lib   \n\tgmodule-2.0.lib   \n\tgthread-2.0.lib   \n\tgstapp-1.0.lib   \n\n8. Setting up your network. Both machines, server (windows 8) and client (ubuntu), should be connected to the same switch.\n  On windows 8: go to \u003e Control Panel \u003e Network and Sharin Center \u003e Ethernet \u003e Properties \u003e TCPIP/IPv4:\n  \n  IP address: 192.168.8.2  \n  Subnet Mask: 255.255.255.0  \n  Default Gateway: 192.168.8.250  \n\n### 1.2 The Coordinate Mapper Table Generator Application\n\nYou can find the Visual Studio in kv2server-applications/KV2ServerCorrdinateMapperTableGenerator.\nRun it and you will find instructions on the terminal. Each Kinect V2 camera has its own unique\ncalibration that can be saved as a binary using this application. If you copy that binary and put it\nin the same directory as your client application executable, you will be able to access that conversion\ntable that is used to map the color image to the depth image, e.g. if you're using the colored-depth streamer\non the client.\n\nAll the project settings should have been setup, but in case you need to do everything yourself,\nsimply include the Kinect SDK and you should be all set:\n\n1. Configuration Properties \u003e C/C++ \u003e General \u003e Additional Include Directories\n\n\t$(KINECTSDK20_DIR)\\inc\n\n2. Configuration Properties \u003e VC++ Directories \u003e Library Directories\n\t\n\t$(KINECTSDK20_DIR)\\lib\\x86\n\n3. Configuration Properties \u003e Linker \u003e Input\n\t\n  kinect20.lib\n\n---\n## 2. KV2Client API\n\nKV2Streamer also provides the client-side API that developers can use to access data from a specific server once the server is running.\n\nThis section describes how you can include the KV2Streamer client-side API\nin your application which runs on Ubuntu. \n\nYou're free to use any libraries/frameworks to render the received images but a sample\napplication is provided in sample-client-applications/codelite. The sample applications\nuses glfw and run on the Codelite IDE.\n\nTo use the client API of KV2Streamer, perform the following steps on your Ubuntu machine:\n \n  1.  Setup and test your network  \n  2.  Install all the dependencies: boost, gstreamer, kv2streamer version of oscpack, and the kv2streamer library.  \n  3.  Include \"KV2ClientCommon.h\" in your application.  \n\n### 2.1 KV2Client API Instructions\n\n1. Setting up your network  \n\tBoth machines server (windows 8) and client (ubuntu) will be connected to the same switch.\n\tOn ubuntu: go to \u003e System Settings \u003e Network \u003e choose the right one \u003e Options \u003e IPv4 Settings:  \n\tAddress: 192.168.8.3  \n\tNetmask: 255.255.255.0  \n\tGateway: 192.168.8.250  \n\tTest by trying to ping each other. Make sure that you're not connected to any other network through the a different network card. \n\n2. Install boost (1.56.0): http://www.boost.org/doc/libs/1_56_0/more/getting_started/unix-variants.html\n\n3. Install gstreamer-1.0\n\n4. Install a modified version of oscpack that you can find in kv2server-applications/oscpack by running \"sudo make install\".\n\n5. Install the kv2streamer-lib by using CMake, and don't forget to run \"sudo make install\" at the end to place the built binaries in /usr/local/lib and the headers in /user/local/include.\n\n6. In your build environment, include the following header search paths:\n\n  kv2streamer\u0026oscpack:  \n\t  /usr/local/include  \n  boost:  \n\t  /usr/local/include/boost  \n  gstreamer:\t  \n\t  /usr/local/include/gstreamer-1.0  \n\t  /usr/include/glib-2.0  \n\t  /usr/lib/x86_64-linux-gnu/glib-2.0/include  \n\n7. Also add the following library search paths in your build environment:\n\t\n\t/usr/local/lib  \n\t/usr/local/lib/gstreamer-1.0  \n\n8. And link to the following libraries:\n    \n    libkv2client  \n\t  libgst-wrapper  \n\t  liboscpack-wrapper  \n\t  liboscpack  \n\t  libboost_system  \n\t  libboost_thread  \n\t  libgstreamer-1.0  \n\t  libgstapp-1.0  \n\t  libglib-2.0  \n\t  libgmodule-2.0  \n\t  libgthread-2.0  \n\t  libgobject-2.0  \n\n7. Finally, include the following in your application:  \n\t\"include \"KV2ClientCommon.h\"\n\nAnd you should be all set!\n\n### 2.2 Sample Build Instructions for Codelite\n\nA sample application, which you can find in /sample-client-applications, is provided so that you can test the library quickly. Follow the steps below to run the sample application.\n\n  1. Install Codelite\n  2. Install glfw: http://www.glfw.org/\n  3. Run the sample application. You should be able to see live camera image (color, depth, skeleton, etc.) from the server.\n\nIf you decide to create a new projects on codelite from scratch, you must do the steps described above, PLUS you have to link to the following libraries:  `libGL`, `libglfw`, and include the following header files: `#include \u003cGLFW/glfw3.h\u003e`.\n\n\nImportant note: to run the executable, open the terminal, then:\n\n  1. Navigate to the executable director: usually /Debug\n  2. Run the following once: $ export LD_LIBRARY_PATH=\"/usr/local/lib\"\n  3. Run the executable: $ ./kv2clientApplication\n\n\n---\n# Summary\nIn short, to use KV2Streamer:\n\n1. Build and run the server application on Windows 8 machine.\n2. Create your own project and include the KV2Client API on Ubuntu.\n3. Run your application.\n\n# Note\n- Only works on the same subnet (Multicast TTL default = 1)\n- Server can run while handling multiple clients connecting and disconnecting, but not the other way, i.e. restarting the server requires restarting all clients.\n- ./shared folder has codes shared by both the server application and the client-side API.\n\n# Contact\nPlease direct questions and comments to:\n\tkvnwinata@gmail.com and anette.vk@samsung.com\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamsung%2Fkv2streamer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamsung%2Fkv2streamer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamsung%2Fkv2streamer/lists"}