Compressed video support for 3D Slicer is available in both the 4.10.2 and 4.11.0 releases.
For users:
- Requires Sequences, SlicerOpenIGTLink and SlicerIGSIO extensions
- Video recording and playback
- Save and load MKV files encoded with VP9
- Stream compressed video through OpenIGTLink
- Storage space for 60 sec, 10 fps, 640x480 video:
- Before: ~222.6 MB, 30s
- Now: ~37.1 MB, <1s
- Video sequences can be re-encoded with different settings/compression levels
For developers:
- Compressed video frames are stored using vtkMRMLStreamingVolumeNode, which handles decoding and encoding of video frames.
- Frame data is represented using vtkStreamingVolumeFrame, which contains frame metadata, as well as pointer to the previous frame in the decoding sequence.
- New codecs can be added to Slicer by subclassing vtkStreamingVolumeCodec and registering it with vtkStreamingVolumeCodecFactory.
- Documentation for compressed video is here: https://www.slicer.org/wiki/Documentation/Nightly/Developers/CompressedVideo
Suggestions and feedback are welcome.
This work was made possible through collaboration with Longquan Chen and Harvard SNRL.
Development was funded in part by CANARIE’s Research Software Program.