This module provides classes to encode and stream frames from a VTK OpenGL render window using video codecs. It supports video encoding with VP9 (through libvpx) and H.264/H.265 (through NVENC).
VTKStreaming is available on PyPi on the following platforms:
- Linux x86_64 for python 3.10 to 3.13 included.
- Windows x86_64 for python 3.10 to 3.13 included.
- MacOSX arm64 for python 3.10 to 3.13 included.
It is currently based on VTK 9.6.0.
pip install vtk-streamingRequirements:
- Linux: A C++ compiler (GCC 11.4+ or any other compiler supported by VTK.)
- Windows: MSVC (Visual Studio Build Tools). (ensure visual studio environment is initialized)
- macOS: Xcode command line tools. (
xcode-select --installshould have completed successfully)
python3 -m venv .venv
. .venv/bin/activate
pip install -e . --extra-index-url https://vtk.org/files/wheel-sdksOpen a powershell with MSVC initialized (ex: Visual Studio Developer Powershell)
python3 -m venv .venv
.venv/bin/activate.ps1
pip install -e . --extra-index-url https://vtk.org/files/wheel-sdksWheels are built with cibuildwheel.
Requirements:
- Linux: Docker (the build runs in a manylinux container).
- Windows: MSVC (Visual Studio Build Tools). (ensure visual studio environment is initialized)
- macOS: Xcode command line tools. (
xcode-select --installshould have completed successfully)
Build a wheel for one Python/platform target:
# Linux
uvx cibuildwheel --only cp310-manylinux_x86_64
# Windows
uvx cibuildwheel --only cp310-win_amd64
# macOS
uvx cibuildwheel --only cp310-macosx_arm64uvx comes with uv; alternatively
pipx run cibuildwheel or if you use pip:
pip install cibuildwheel
# Linux
cibuildwheel --only cp310-manylinux_x86_64
# Windows
cibuildwheel --only cp310-win_amd64
# macOS
cibuildwheel --only cp310-macosx_arm64Substitute cp310/cp311/cp312/cp313 to target other Python versions. The wheel is
written to wheelhouse/ and can be installed directly:
pip install wheelhouse/vtk_streaming-*.whl- examples/simple_encoder_decoder.py - Live VP9 encode/decode round-trip with two render windows side by side.
- examples/resize_encoder_decoder.py - VP9 encode/decode round-trip that survives window resizes.
- examples/simple_nvenc_record.py - Record a render window for later playback using NVENC. This needs
ffplayto playback the .h264 file.
- For issues with the API, usage or bugs in VTKStreaming libraries, please report them on the original repository.
- For issues with wheel installation, supported Python and VTK versions or Python-side issues, please report them on the GitHub Fork.