Facebook 360 Capture SDK
More actions
| Facebook 360 Capture SDK | |
|---|---|
| Information | |
| Type | Software development kit |
| Industry | Virtual reality |
| Developer | |
| Written In | C++ (core library), C# (Unity sample) |
| Operating System | Windows 7 SP1 or later |
| License | BSD License |
| Supported Devices | PC VR headsets such as the Oculus Rift and HTC Vive; NVIDIA and AMD GPUs |
| Release Date | April 19, 2017 |
| Website | https://github.com/facebookarchive/360-Capture-SDK |
The Facebook 360 Capture SDK (released as the 360 Capture SDK, and called the FBCapture SDK in its own documentation) is an open-source software development kit from Facebook that let developers of PC virtual reality games and apps add 360-degree photo and video capture to their titles. Facebook announced it on April 19, 2017, at its F8 developer conference and published a sample SDK on GitHub.[1][2]
Instead of rendering many views and stitching them into a panorama, the SDK captures the scene as a cubemap, a set of six square images that form the faces of a cube around the player. Facebook said this made capture fast enough to run on the baseline recommended hardware for VR while the headset kept its 90 frames per second.[1] The resulting photos and videos could be shared to the Facebook News Feed or watched in a VR headset.[1][3] Facebook kept releasing updates until January 2019, when version 2.35 added a software encoding fallback. The repository has since been archived as read-only under GitHub's facebookarchive organization.[4][5]
History
Background
Facebook was already using cube maps for 360-degree video. In an October 2015 engineering post, David Pio and Evgeny Kuzyakov said the company converted uploaded equirectangular video into cube maps, which hold the same information "but it contains 25 percent fewer pixels per frame."[6] The 2017 announcement said that, while building 360 video for News Feed, Facebook had found that cube mapping led to better delivery and streaming quality.[7]
Announcement at F8 2017
Homin Lee and Chetan Gupta introduced the SDK in an engineering blog post on April 19, 2017.[1] F8 that year also had a session titled "360 Capture SDK: Making VR Social Through Immersive Media Capture".[8] According to UploadVR, captures could be posted to News Feed, viewed by other people in VR headsets, and opened in Facebook Spaces.[2]
PCWorld reported that at launch the SDK saved photos and videos to the user's hard drive and had no built-in sharing function. Facebook planned to explore sharing options later, and in the meantime developers could build their own.[9] VentureBeat suggested that apps outside gaming, such as carmakers, real estate, travel and hospitality, and sporting events, could use the capture feature.[3]
Open-source releases (2017-2019)
The repository's commit history begins on April 14, 2017. On April 20, 2017, one day after the announcement, the full source code was taken out of the repository, with a note that libraries and headers would be added later for developers using in-house engines. A DLL version for such developers followed on April 24. A commit on September 6, 2017, open-sourced the version 1 DLL.[10] Tagged releases began in October 2017 and continued until January 2019.[5]
| Release | Date | Notable changes |
|---|---|---|
| 1.0.0 and 1.0.1 | October 19, 2017 | Debug and release builds of the Wamedia dependency libraries for building FBCapture.dll[5] |
| 1.1 | January 18, 2018 | Updated FBCapture.dll with improvements to live streaming, audio and video encoding, and support for the HTC Vive[5] |
| 1.2 | March 5, 2018 | Fixed glitchy encoding on the latest AMD driver; Facebook said 4K x 4K texture encoding ran twice as fast; live streaming quality improved[5] |
| 1.30 | April 12, 2018 | Memory leak and crash fixes; 4K encoding settings enabled on AMD GPUs[5] |
| 2.0 | May 4, 2018 | RGB-D capture for equirectangular video, 360 metadata injection, webcam capture with overlay, Windows 7 SP1 and 32-bit support[5] |
| 2.01 | May 22, 2018 | Source code released alongside 2.0; built with Visual Studio 2015[5] |
| 2.20 | August 6, 2018 | Video encoding without an audio device; NVIDIA encoding sessions released cleanly after use[5] |
| 2.25 | September 5, 2018 | Fixed DirectX device creation on the wrong GPU in multi-GPU systems and blank screenshots in the Unity sample[5] |
| 2.35 | January 16, 2019 | Software encoding fallback using the OpenH264 library, so capture and live streaming also work on Intel GPUs; "DX11 device lost" fix[5] |
Features
Cube map capture
The SDK saves photos as a 6x1 cube strip. This contains the same data as a cube map in a different layout, and a shader can convert it to the equirectangular format that some platforms need.[1] Facebook said earlier stitching plugins took 20 to 40 seconds, and sometimes longer, to capture and stitch 360 photos, while cube map capture took less than a second. It also said cube maps have no geometric distortion within each face, have well-distributed pixels with no poles, and at 720p look "almost equivalent" to 1080p equirectangular images.[1]
Facebook's announcement claimed the SDK could keep 90 frames per second on the Oculus Rift while recording 360 video at 30 frames per second, and could capture at resolutions of up to 4K. It gave 1080p as the minimum resolution for good viewing on News Feed and 4K as the minimum for VR.[1] UploadVR reported the VR target as 1440p instead.[2] PCWorld said 1080p capture at 30 frames per second worked on less powerful hardware, and 4K needed a more powerful machine.[9]
Video, streaming and screenshots
FBCapture.dll handles all encoding and screenshot sessions. Its documented API has separate calls to configure and start live streaming, video-on-demand recording, screenshots and preview capture. Each takes a resolution and can be set for 360 or regular capture. The live streaming and recording calls also take a frame rate and bit rate. Live streams go to a streaming URL, and recordings are saved as MP4 or H.264 files.[11] In the Unity sample, the presets are 720p (1280 x 720, 2 megabits per second), 1080p (1920 x 1080, 4 megabits per second) and 4K (4096 x 2048, 10 megabits per second), and projection can be set to equirectangular or cube map.[11]
The SDK can record a VR headset's audio output and microphone input, or capture video with no audio. Webcam footage can be overlaid on the capture.[11] When a 360 recording stops, the SDK writes the projection type, stereo mode and stitching software name into the file's metadata. Facebook said this produces a second file, ending in "_injected.mp4", that can be uploaded to Facebook or YouTube with no further processing.[11][5] Version 2.0 added RGB-D capture for equirectangular video, which a Unity shader generates from the engine's depth texture as an inverse depth map, for playback in an RGB-D video player.[11][5]
Engines and source code
The announcement said the SDK supported Unity, Unreal Engine and native engines. For Unity, a capture script and a DLL handled encoding and metadata injection on PC.[1] The archived repository contains the FBCapture Unity package; the Unity sample project was moved to the releases page in October 2018.[10] The FBCapture prefab uses its 360 capture cameras and shaders to generate cube map, equirectangular and depth textures.[11] GitHub lists C++ as the repository's main language. The source tree includes Direct3D 11 texture capture, NVIDIA and AMD hardware encoders, an OpenH264 software encoder, an RTMP streaming module, and MP4 and FLV muxers.[4]
Supported hardware
The README lists the following requirements:[11]
| Component | Requirement |
|---|---|
| NVIDIA GPU | Quadro, Tesla, GRID or GeForce products with Kepler, Maxwell or Pascal generation GPUs; Windows display driver 375.95 or newer |
| AMD GPU | GPUs supported by AMD Radeon Software Crimson 17.1.1 or later |
| Operating system | Windows 7 SP1 or later |
The SDK checks the Windows version, graphics vendor and driver version before encoding begins. It does not start if the minimum specification is not met.[11] PCWorld noted that the SDK was relevant to the Oculus Rift and to competing headsets such as the HTC Vive.[9] From version 2.35, encoding falls back to software when GPU encoding fails.[5]
License and status
The repository's LICENSE file is a BSD license, copyright Facebook, Inc.[12] A separate PATENTS file was deleted from the repository on January 10, 2019.[10] The last push was the 2.35 release on January 16, 2019. The repository is now read-only and sits under the facebookarchive organization on GitHub, with no further releases.[4][5] Meta still hosts the original announcement on its Horizon developer blog.[7]
See also
References
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Homin Lee, Chetan Gupta (2017-04-19). "Announcing 360 Capture SDK". Engineering at Meta. Facebook. https://engineering.fb.com/developer-tools/announcing-360-capture-sdk. Retrieved 2026-10-21.
- ↑ 2.0 2.1 2.2 Joe Durbin (2017-04-19). "F8 2017: Facebook Announces 360 Capture SDK To Record And Share VR Experiences With Cube Mapping". UploadVR. https://www.uploadvr.com/facebook-announces-360-capture-sdk-let-share-vr-experiences-cube-mapping/. Retrieved 2026-10-21.
- ↑ 3.0 3.1 Ken Yeung (2017-04-19). "Facebook's new developer SDK lets users capture 360 photos and videos in-app". VentureBeat. https://venturebeat.com/arvr/facebooks-new-developer-sdk-lets-users-capture-360-photos-and-videos-in-app. Retrieved 2026-10-21.
- ↑ 4.0 4.1 4.2 "facebookarchive/360-Capture-SDK". GitHub. Facebook. https://github.com/facebookarchive/360-Capture-SDK. Retrieved 2026-10-21.
- ↑ 5.00 5.01 5.02 5.03 5.04 5.05 5.06 5.07 5.08 5.09 5.10 5.11 5.12 5.13 5.14 "Releases: facebookarchive/360-Capture-SDK". GitHub. Facebook. https://github.com/facebookarchive/360-Capture-SDK/releases. Retrieved 2026-10-21.
- ↑ David Pio, Evgeny Kuzyakov (2015-10-15). "Under the hood: Building 360 video". Engineering at Meta. Facebook. https://engineering.fb.com/2015/10/15/video-engineering/under-the-hood-building-360-video/. Retrieved 2026-10-21.
- ↑ 7.0 7.1 Homin Lee, Chetan Gupta (2017-04-19). "Announcing 360 Capture SDK". Meta Horizon Developers Blog. Meta. https://developers.meta.com/horizon/blog/announcing-360-capture-sdk/. Retrieved 2026-10-21.
- ↑ "360 Capture SDK: Making VR Social Through Immersive Media Capture". Meta for Developers. Facebook. 2017-04-19. https://developers.facebook.com/videos/f8-2017/360-capture-sdk-making-vr-social-through-immersive-media-capture/. Retrieved 2026-10-21.
- ↑ 9.0 9.1 9.2 Blair Hanley Frank (2017-04-19). "Facebook launches tool for capturing 360 video inside VR". PCWorld. https://www.pcworld.com/article/406493/facebook-launches-tool-for-capturing-360-video-inside-vr.html. Retrieved 2026-10-21.
- ↑ 10.0 10.1 10.2 "Commits: facebookarchive/360-Capture-SDK". GitHub. Facebook. https://github.com/facebookarchive/360-Capture-SDK/commits/master. Retrieved 2026-10-21.
- ↑ 11.0 11.1 11.2 11.3 11.4 11.5 11.6 11.7 "360-Capture-SDK README.md". GitHub. Facebook. https://github.com/facebookarchive/360-Capture-SDK/blob/master/README.md. Retrieved 2026-10-21.
- ↑ "360-Capture-SDK LICENSE". GitHub. Facebook. https://github.com/facebookarchive/360-Capture-SDK/blob/master/LICENSE. Retrieved 2026-10-21.