Skip to content

Ubuntu Deployment Guide for VisioForge SDK Applications

Video Capture SDK .Net Video Edit SDK .Net Media Player SDK .Net Media Blocks SDK .Net

Introduction

Deploying .NET applications with VisioForge SDKs on Ubuntu Linux offers multiple benefits, including cross-platform compatibility, access to Linux-specific hardware, and the ability to run your multimedia applications on environments ranging from server infrastructure to edge devices. This comprehensive guide will walk you through the complete process of configuring your Ubuntu environment, installing the necessary dependencies, and deploying your VisioForge-powered .NET application.

The VisioForge SDK family works on Ubuntu and other Linux distributions that support GStreamer libraries. Additional supported platforms include Nvidia Jetson devices and Raspberry Pi, making it perfect for a wide range of applications from desktop multimedia software to IoT solutions.

System Requirements

Before deploying your application, ensure your Ubuntu environment meets these minimum requirements:

  • Ubuntu 20.04 LTS or later (22.04 LTS and later recommended)
  • .NET 7.0 or later runtime
  • At least 4GB RAM (8GB recommended for video processing)
  • x86_64 or ARM64 architecture
  • Internet connection for package installation

Installation and Setup

Installing .NET

Download the latest .NET installer package from the Microsoft website and follow the installation instructions.

GStreamer Installation

GStreamer forms the multimedia backbone for VisioForge SDKs on Linux platforms. It provides essential functionality for audio and video capture, processing, and playback.

Required GStreamer Packages

Install the following GStreamer packages using apt-get. We require v1.22.0 or later, though v1.24.0+ is highly recommended for access to the latest features and optimizations:

  • gstreamer1.0-plugins-base: Essential baseline plugins
  • gstreamer1.0-plugins-good: High-quality, well-tested plugins
  • gstreamer1.0-plugins-bad: Newer plugins of varying quality
  • gstreamer1.0-alsa: ALSA audio support
  • gstreamer1.0-gl: OpenGL rendering support
  • gstreamer1.0-pulseaudio: PulseAudio integration
  • libges-1.0-0: GStreamer Editing Services
  • gstreamer1.0-libav: FFMPEG integration (OPTIONAL but recommended for broader format support)

Complete Installation Script

The following commands will update your package repositories and install all required GStreamer components:

sudo apt update
sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-pulseaudio gstreamer1.0-libav libges-1.0-0

Raspberry Pi Additional Requirements

For Raspberry Pi, additionally, you need to install the following packages:

sudo apt install gstreamer1.0-libcamera

Verifying GStreamer Installation

After installation, verify your GStreamer setup by running:

gst-inspect-1.0 --version

This should display the installed GStreamer version. Ensure it meets the minimum requirement (1.22.0+) or ideally shows 1.24.0 or later.

Required NuGet Packages

When deploying your .NET application to Ubuntu, you'll need to include additional platform-specific NuGet packages that provide the necessary native libraries and bindings.

Additional Core Linux Package

The VisioForge.CrossPlatform.Core.Linux.x64 package contains essential native libraries and bindings for the .NET Linux platform. This package is mandatory for all VisioForge SDK deployments on Ubuntu.

Development Environment

You can use Rider to develop your project in Linux. Please check the Rider installation page for more information.

Application Deployment

Follow these steps to deploy your application on Ubuntu:

Publishing Your Application

To create a self-contained deployment that includes all .NET runtime dependencies:

dotnet publish -c Release -r linux-x64 --self-contained true

For smaller deployments where the target machine already has .NET installed:

dotnet publish -c Release -r linux-x64 --self-contained false

Deployment Structure

Your deployment folder should contain:

  • Your application executable
  • Application DLLs
  • VisioForge SDK assemblies
  • Native Linux libraries from the VisioForge NuGet packages

Setting Execution Permissions

Ensure your application executable has the proper permissions:

chmod +x ./YourApplicationName

Hardware Considerations

Camera Support

Ubuntu supports various camera types:

  • USB Webcams: Most USB webcams work out of the box
  • IP Cameras: Supported via RTSP, HTTP streams
  • Professional Cameras: Many professional cameras with Linux drivers are supported
  • Virtual Devices: v4l2loopback can be used for virtual camera creation

To list available camera devices:

v4l2-ctl --list-devices

Audio Devices

Audio capture and playback is supported through:

  • ALSA (Advanced Linux Sound Architecture)
  • PulseAudio

To list available audio devices:

arecord -L  # For recording devices
aplay -L    # For playback devices

Running under WSL (WSLg)

WSLg is convenient for development, and everything except the video preview works in it the same way as on a native installation. The video preview is the one exception: when the VideoView control creates its native child window (HWND on Windows, X11/XEmbed on Linux), the WSLg windowing stack fails to initialize it, and the application exits as soon as the first frame arrives — typically with Mesa errors such as ZINK: failed to choose pdev or failed to create dri2 screen in the console. This is a WSLg limitation, not an application or SDK defect.

For development inside WSL, switch the VideoView to software rendering before starting the pipeline — the video is then drawn inside the Avalonia visual tree, no native child window is created, and previews work under WSLg:

videoView.SetNativeRendering(false);

Software mode costs a CPU copy per frame and is intended for development and overlay scenarios; on a native Ubuntu installation the default native embedding remains the recommended path. See Overlaying Avalonia Controls on Video for details.

Troubleshooting

Permission Issues

Camera or audio device access issues can often be resolved by adding your user to the appropriate groups:

sudo usermod -a -G video,audio $USER

Remember to log out and back in for group changes to take effect.

Performance Optimization

For optimal performance on Ubuntu:

  • Use the latest GStreamer version (1.24.0+)
  • Enable hardware acceleration where available
  • For NVIDIA GPUs, install the appropriate CUDA and nvcodec packages
  • Adjust process priority using nice for resource-intensive applications

Conclusion

Deploying VisioForge SDK applications on Ubuntu provides a powerful, flexible environment for multimedia applications. By following this guide, you can ensure that your .NET application leverages the full capabilities of the VisioForge SDK ecosystem on Linux platforms.

For specific deployment scenarios or troubleshooting assistance, refer to the comprehensive documentation available on the VisioForge website or contact our technical support team.


Visit our GitHub page to get more code samples.