# Apple macOS Deployment Guide

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

# Introduction

VisioForge's powerful .NET SDKs provide comprehensive media processing capabilities for macOS developers. Whether you're building video capture applications, media players, video editors, or complex media processing pipelines, our SDKs offer the tools you need to deliver high-quality solutions on Apple's platforms.

The VisioForge SDK provides comprehensive support for macOS application development using .NET technologies. You can leverage this SDK to build robust media processing applications that run natively on macOS, including support for both Intel (x64) and Apple Silicon (ARM64) architectures.

This guide covers everything you need to know to set up, configure, and deploy applications for macOS and MacCatalyst environments using the VisioForge SDK. Whether you're building traditional macOS applications or cross-platform solutions using frameworks like MAUI or Avalonia, this document will help you navigate the installation and deployment process.

# System Requirements

Before starting the installation and deployment process, ensure your development environment meets the following requirements:

# Hardware Requirements

  • Mac computer with Intel processor (x64) or Apple Silicon (ARM64)
  • Minimum 8GB RAM (16GB recommended for video processing)
  • Sufficient disk space for development tools and application assets

# Software Requirements

  • macOS 10.15 (Catalina) or later (latest version recommended)
    • macOS Monterey (12.x)
    • macOS Ventura (13.x)
    • macOS Sonoma (14.x)
    • Future macOS releases (with ongoing updates)
  • Xcode 12 or later with Command Line Tools installed
  • .NET 6.0 SDK or later
  • Visual Studio for Mac or JetBrains Rider (recommended IDEs)

To install XCode Command Line Tools, run the following in Terminal:

xcode-select --install

# Architecture Support

The VisioForge SDK for macOS supports both major processor architectures:

# Intel (x64) Support

  • Compatible with all Intel-based Mac computers
  • Uses native x64 libraries for optimal performance
  • Full feature support across all SDK components

# Apple Silicon (ARM64) Support

  • Native support for M1, M2, and newer Apple Silicon chips
  • Optimized ARM64 native libraries for maximum performance
  • Hardware acceleration leveraging Apple's Neural Engine where applicable

# Universal Binary Considerations

When targeting both architectures, consider building universal binaries that include both x64 and ARM64 code. This approach ensures your application runs natively on either platform without relying on Rosetta 2 translation.

For universal binary builds targeting both Intel and Apple Silicon:

<PropertyGroup>
  <RuntimeIdentifiers>osx-x64;osx-arm64</RuntimeIdentifiers>
  <UseHardenedRuntime>true</UseHardenedRuntime>
</PropertyGroup>

# Core Technologies

VisioForge .NET SDKs leverage several key technologies to deliver high-performance media capabilities on macOS:

# GStreamer Integration

All VisioForge SDKs utilize GStreamer as the underlying framework for video/audio playback and encoding. GStreamer provides:

  • Hardware-accelerated media processing
  • Broad format compatibility
  • Optimized playback pipeline
  • Efficient encoding capabilities

The GStreamer components are automatically installed through our redistributable packages, eliminating the need for manual configuration.

# Installation and NuGet Package Deployment

The primary method for deploying VisioForge SDK components to macOS applications is through NuGet packages. These packages include all necessary managed and unmanaged libraries required for your application.

# Essential NuGet Packages

For native macOS applications, add these core packages:

  1. Main SDK Package (based on your needs):

    • VisioForge.DotNet.VideoCapture for camera capture applications
    • VisioForge.DotNet.VideoEdit for video editing applications
    • VisioForge.DotNet.MediaPlayer for media playback applications
    • VisioForge.DotNet.MediaBlocks for advanced media processing pipelines
  2. UI Package:

    • VisioForge.DotNet.Core includes Apple-specific UI controls
  3. Platform Redistributable:

    • VisioForge.CrossPlatform.Core.macOS for native libraries and dependencies

# macOS Applications

For standard macOS applications targeting the netX.0-macos framework (where X represents the .NET version), use the following NuGet package:

This package contains:

  • Native libraries for media processing
  • GStreamer components for media playback and encoding
  • Interface assemblies for .NET integration
  • Both x64 and ARM64 binaries

# Getting Started with Native macOS Projects

To begin developing native macOS applications with VisioForge SDKs:

  1. Create a new macOS project in your preferred IDE (Visual Studio for Mac or JetBrains Rider)
  2. Add required NuGet packages (as detailed above)
  3. Configure project settings for your target architecture

# MacCatalyst and MAUI Applications

# Cross-Platform Development with .NET MAUI

.NET Multi-platform App UI (MAUI) enables developing applications that run seamlessly across macOS, iOS, Android, and Windows from a single codebase. VisioForge provides comprehensive support for MAUI development through specialized packages and controls.

For MacCatalyst applications (including MAUI projects) targeting the netX.0-maccatalyst framework, use:

# MAUI Package Configuration

For MAUI projects targeting macOS (through MacCatalyst), add these packages:

<ItemGroup Condition="$(TargetFramework.Contains('-maccatalyst'))">
  <PackageReference Include="VisioForge.CrossPlatform.Core.macCatalyst" Version="15.10.11" />
  <PackageReference Include="VisioForge.DotNet.Core.UI.MAUI" Version="15.10.11" />
</ItemGroup>

# MAUI Project Setup

  1. Initialize SDK in MauiProgram.cs:
builder
  .UseMauiApp<App>()
  .UseSkiaSharp()
  .ConfigureMauiHandlers(handlers => handlers.AddVisioForgeHandlers());
  1. Add VideoView Control in XAML:
xmlns:vf="clr-namespace:VisioForge.Core.UI.MAUI;assembly=VisioForge.Core.UI.MAUI"

<vf:VideoView Grid.Row="0"
              HorizontalOptions="FillAndExpand"
              VerticalOptions="FillAndExpand"
              x:Name="videoView"
              Background="Black"/>

MacCatalyst applications require additional configuration to ensure native libraries are properly included in the application bundle. Add the following custom build target to your project file:

<Target Name="CopyNativeLibrariesToMonoBundle" AfterTargets="Build" Condition="$(TargetFramework.Contains('-maccatalyst'))">
    <Message Text="Starting CopyNativeLibrariesToMonoBundle target..." Importance="High"/>

    <PropertyGroup>
        <AppBundleDir>$(OutputPath)$(AssemblyName).app</AppBundleDir>
        <MonoBundleDir>$(AppBundleDir)/Contents/MonoBundle</MonoBundleDir>
    </PropertyGroup>

    <Message Text="AppBundleDir: $(AppBundleDir)" Importance="High"/>
    <Message Text="MonoBundleDir: $(MonoBundleDir)" Importance="High"/>

    <MakeDir Directories="$(MonoBundleDir)" Condition="!Exists('$(MonoBundleDir)')"/>

    <Copy SourceFiles="@(None-&gt;'%(FullPath)')" DestinationFolder="$(MonoBundleDir)" Condition="'%(Extension)' == '.dylib' Or '%(Extension)' == '.so'">
        <Output TaskParameter="CopiedFiles" ItemName="CopiedNativeFiles"/>
    </Copy>

    <Message Text="Copied native files:" Importance="High" Condition="@(CopiedNativeFiles) != ''"/>
    <Message Text=" - %(CopiedNativeFiles.Identity)" Importance="High" Condition="@(CopiedNativeFiles) != ''"/>

    <Message Text="Finished CopyNativeLibrariesToMonoBundle target." Importance="High"/>
</Target>

This target performs several crucial tasks:

  1. Identifies the application bundle directory
  2. Creates the MonoBundle directory if it doesn't exist
  3. Copies all .dylib and .so native libraries to the MonoBundle directory
  4. Outputs diagnostic information for troubleshooting

For complete MAUI integration details, see our dedicated MAUI documentation page.

# UI Framework Options

The VisioForge SDK supports multiple UI frameworks for macOS development:

# Native macOS UI

For traditional macOS applications, the SDK provides VideoViewGL controls that integrate with the native AppKit framework. These controls provide high-performance video rendering using OpenGL.

# MAUI

For cross-platform MAUI applications, use the VisioForge.DotNet.Core.UI.MAUI package, which provides MAUI-compatible video views.

# Avalonia

For Avalonia UI applications, the VisioForge.DotNet.Core.UI.Avalonia package offers Avalonia-compatible video controls.

# Development Environment Setup

# JetBrains Rider Integration

JetBrains Rider provides an excellent development experience for macOS and iOS applications using VisioForge SDKs:

  1. Create a new project in Rider targeting macOS or iOS
  2. Add the required NuGet packages through the Package Manager
  3. Configure project settings for your target platform
  4. Add UI controls and implement SDK functionality

For detailed Rider setup instructions, see our Rider integration guide.

# Visual Studio for Mac Setup

Despite its deprecation, Visual Studio for Mac still works for developing macOS and iOS applications with VisioForge SDKs:

  1. Create a new project in Visual Studio for Mac
  2. Add NuGet packages through the NuGet Package Manager
  3. Configure necessary build settings
  4. Add UI controls to your application's interface

For detailed Visual Studio for Mac instructions, see our Visual Studio for Mac guide.

# SDK Initialization and Cleanup

X-engines in the VisioForge SDK require explicit initialization and cleanup to manage resources properly:

// Initialize SDK at application startup
VisioForge.Core.VisioForgeX.InitSDK();

// Use SDK components...

// Clean up resources before application exit
VisioForge.Core.VisioForgeX.DestroySDK();

For asynchronous initialization and cleanup, use the async variants:

// Async initialization
await VisioForge.Core.VisioForgeX.InitSDKAsync();

// Async cleanup
await VisioForge.Core.VisioForgeX.DestroySDKAsync();

# Troubleshooting Common Issues

# Native Library Loading Failures

If your application fails to load native libraries:

  1. Verify all required NuGet packages are properly installed
  2. Check the application bundle structure to ensure libraries are in the correct location
  3. Use the dtruss or otool commands to diagnose library loading issues
  4. Ensure XCode Command Line Tools are properly installed

# MacCatalyst-Specific Issues

For MacCatalyst deployment problems:

  1. Verify the CopyNativeLibrariesToMonoBundle target is correctly implemented
  2. Check that the MonoBundle directory contains all necessary native libraries
  3. Ensure the application has appropriate entitlements for media access

# Performance Optimization

For optimal performance:

  1. Enable hardware acceleration when available
  2. Adjust video resolution based on device capabilities
  3. Close and dispose of SDK objects when no longer needed

# Additional Resources

For code samples, example projects, and more technical resources:

Our samples repository contains comprehensive examples showing:

  • Video capture from cameras
  • Media playback implementations
  • Video editing workflows
  • Advanced media processing pipelines

# Conclusion

VisioForge .NET SDKs provide powerful media capabilities for macOS and iOS developers, enabling the creation of sophisticated multimedia applications. By following this installation and deployment guide, you've established the foundation for building high-performance media applications across Apple's platforms.

For any additional questions or support needs, please contact our technical support team or visit our forums for community assistance.


This documentation is regularly updated to reflect the latest SDK features and compatibility information.