Saltar a contenido

Integrar SDKs de VisioForge con aplicaciones .NET MAUI

Descripción general

.NET Multi-platform App UI (MAUI) permite a los desarrolladores construir aplicaciones multiplataforma para móviles y escritorio desde una única base de código. VisioForge proporciona soporte completo para aplicaciones MAUI a través del paquete NuGet VisioForge.DotNet.Core.UI.MAUI (espacio de nombres: VisioForge.Core.UI.MAUI), que contiene controles de UI especializados diseñados específicamente para la plataforma .NET MAUI.

Nuestros SDKs habilitan potentes capacidades multimedia en todas las plataformas soportadas por MAUI:

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

¿Busca un tutorial funcional?

Una vez instalados los paquetes, siga la Guía del Reproductor de Video .NET MAUI — una implementación completa de VideoView + MediaPlayerCoreX con selector de archivos, búsqueda y volumen que funciona en iOS, Android, macOS y Windows desde una sola base de código.

Comenzar

Instalación

Para comenzar a usar VisioForge con su proyecto MAUI, instale los paquetes NuGet requeridos:

  1. El paquete SDK para el producto que esté usando - uno de:
  2. VisioForge.DotNet.VideoCapture - captura de cámara, pantalla y cámara IP (VideoCaptureCoreX)
  3. VisioForge.DotNet.MediaPlayer - reproducción de archivos y de red (MediaPlayerCoreX)
  4. VisioForge.DotNet.VideoEdit - edición de línea de tiempo y renderizado (VideoEditCoreX)
  5. VisioForge.DotNet.MediaBlocks - pipelines personalizados (MediaBlocksPipeline)
  6. El paquete de UI principal: VisioForge.DotNet.Core.UI.MAUI - el control VideoView
  7. Redistributable específico de plataforma (detallado en las secciones de plataforma a continuación)
<ItemGroup>
  <!-- Sustituir por el paquete SDK que use su aplicación. -->
  <PackageReference Include="VisioForge.DotNet.MediaPlayer" Version="2026.*" />
  <PackageReference Include="VisioForge.DotNet.Core.UI.MAUI" Version="2026.*" />
</ItemGroup>

VisioForge.DotNet.Core.UI.MAUI solo proporciona el control VideoView. Por sí solo no puede compilar VideoCaptureCoreX, MediaPlayerCoreX ni VideoEditCoreX - el paquete SDK anterior es lo que los incorpora.

Inicialización del SDK

La inicialización adecuada es esencial para que los SDKs de VisioForge funcionen correctamente dentro de su aplicación MAUI. Este proceso debe completarse en su archivo MauiProgram.cs.

using SkiaSharp.Views.Maui.Controls.Hosting;
using VisioForge.Core.UI.MAUI;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
          .UseMauiApp<App>()
          // Inicializa el paquete SkiaSharp agregando la línea de código a continuación
          .UseSkiaSharp()
          // Inicializa el paquete MAUI de VisioForge agregando la línea de código a continuación
          .ConfigureMauiHandlers(handlers => handlers.AddVisioForgeHandlers())
          // Después de inicializar el paquete MAUI de VisioForge, opcionalmente agregar fuentes adicionales
          .ConfigureFonts(fonts =>
          {
              fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
              fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
          });

        // Continuar inicializando su App .NET MAUI aquí
        return builder.Build();
    }
}

AddVisioForgeHandlers registra el handler de VideoView. No carga el stack nativo - eso es una llamada aparte, y debe ejecutarse antes de construir el primer VideoCaptureCoreX, MediaPlayerCoreX, VideoEditCoreX o MediaBlocksPipeline. Sin ella, el constructor lanza DllNotFoundException en una máquina limpia:

using VisioForge.Core;

// Inicialización asíncrona (recomendada - la primera llamada construye el registro de
// GStreamer y puede tardar cientos de milisegundos, lo que bloquearía el hilo de la UI).
await VisioForgeX.InitSDKAsync();

// O inicialización síncrona.
VisioForgeX.InitSDK();

Libera el SDK cuando la página o la aplicación se cierren:

VisioForgeX.DestroySDK();

Usar controles de VisioForge en XAML

El control VideoView es la interfaz principal para mostrar contenido de video en su aplicación MAUI. Para usar controles de VisioForge en sus archivos XAML:

  1. Agregue el espacio de nombres de VisioForge a su archivo XAML:
xmlns:vf="clr-namespace:VisioForge.Core.UI.MAUI;assembly=VisioForge.Core.UI.MAUI"
  1. Agregue el control VideoView a su diseño:
<vf:VideoView Grid.Row="0"               
                HorizontalOptions="FillAndExpand"
                VerticalOptions="FillAndExpand"
                x:Name="videoView"
                Background="Black"/>

El control VideoView se adapta a las capacidades de renderizado nativas de cada plataforma mientras proporciona una API consistente para el código de su aplicación.

Configuración específica de plataforma

Implementación en Android

Android requiere pasos de configuración adicionales para asegurar el funcionamiento adecuado:

1. Agregar biblioteca de bindings Java

El SDK de VisioForge depende de funcionalidad nativa de Android que requiere una biblioteca de bindings Java personalizada:

  1. Clona la biblioteca de binding de nuestro repositorio de GitHub
  2. Elija el proyecto de binding que coincida con la versión de .NET con la que compila - la carpeta incluye un VisioForge.Core.Android.X{N}.csproj por cada versión de .NET soportada (por ejemplo, VisioForge.Core.Android.X9.csproj para .NET 9, VisioForge.Core.Android.X10.csproj para .NET 10). Si su versión de .NET no aparece en la lista, elija la más cercana disponible.
  3. Agregue la referencia a su archivo de proyecto:
<ItemGroup Condition="$(TargetFramework.Contains('-android'))">
  <ProjectReference Include="..\..\..\AndroidDependency\VisioForge.Core.Android.X10.csproj" />
</ItemGroup>

2. Agregar paquete redistributable de Android

Incluye el paquete redistributable específico de Android:

<ItemGroup Condition="$(TargetFramework.Contains('-android'))">
  <PackageReference Include="VisioForge.CrossPlatform.Core.Android" Version="2026.*" />
</ItemGroup>

3. Permisos de Android

Asegúrese de que su AndroidManifest.xml incluya los permisos necesarios para acceso a cámara, micrófono y almacenamiento dependiendo de la funcionalidad de su aplicación. Los permisos comúnmente requeridos incluyen:

  • android.permission.CAMERA
  • android.permission.RECORD_AUDIO
  • android.permission.READ_EXTERNAL_STORAGE
  • android.permission.WRITE_EXTERNAL_STORAGE

Configuración de iOS

La integración con iOS requiere menos pasos pero tiene algunas consideraciones importantes:

1. Agregar redistributable de iOS

Agregue el paquete específico de iOS a su proyecto:

<ItemGroup Condition="$(TargetFramework.Contains('-ios'))">
  <!-- La versión del redistribuable de iOS va por detrás de la versión del SDK a propósito - sigue
       el ciclo de reconstrucción de GStreamer-iOS, no el lanzamiento del wrapper. No subirla para
       igualar VisioForge.DotNet.*; no existe una versión 2026.x en nuget.org. -->
  <PackageReference Include="VisioForge.CrossPlatform.Core.iOS" Version="[2026.10.26]"/>
</ItemGroup>

2. Notas importantes para desarrollo iOS

  • Use dispositivos físicos: El SDK requiere pruebas en dispositivos iOS físicos en lugar de simuladores para funcionalidad completa.
  • Descripciones de privacidad: Agregue las cadenas de descripción de uso necesarias en su archivo Info.plist para acceso a cámara y micrófono:
  • NSCameraUsageDescription
  • NSMicrophoneUsageDescription
  • NSLocalNetworkUsageDescription — necesario para alcanzar un servidor o dispositivo en la red local. Sin esta clave, iOS 14+ descarta el tráfico LAN en silencio (sin diálogo ni error).

Configuración de macOS

Para aplicaciones macOS Catalyst:

1. Acceso a la red local

Si su aplicación se conecta a un servidor o dispositivo de la red local, agregue NSLocalNetworkUsageDescription al Info.plist de Mac Catalyst. Sin esta clave, iOS y Mac Catalyst pueden bloquear silenciosamente el tráfico de la red local sin mostrar un aviso de permiso.

2. Configurar identificadores de runtime

Para asegurar que su aplicación funcione correctamente tanto en Macs Intel como Apple Silicon, especifica los identificadores de runtime apropiados:

<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('osx')) AND '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture)' == 'X64' AND $(TargetFramework.Contains('-maccatalyst'))">
  <RuntimeIdentifier>maccatalyst-x64</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::IsOSPlatform('osx')) AND '$([System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture)' == 'Arm64' AND $(TargetFramework.Contains('-maccatalyst'))">
  <RuntimeIdentifier>maccatalyst-arm64</RuntimeIdentifier>
</PropertyGroup>

3. Habilitar recorte

Para rendimiento óptimo en macOS, habilita la opción PublishTrimmed:

<PublishTrimmed Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">true</PublishTrimmed>

Para información más detallada sobre el despliegue en macOS, consulte nuestra página de documentación de macOS.

Configuración de Windows

Para aplicaciones Windows, necesita incluir varios paquetes redistributables:

1. Agregar redistributables base de Windows

Incluye los paquetes principales de Windows:

<ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
  <PackageReference Include="VisioForge.CrossPlatform.Core.Windows.x64" Version="2026.*" />
</ItemGroup>

2. Agregar soporte extendido de codecs (opcional pero recomendado)

Para soporte mejorado de formatos de medios, incluye el paquete libAV (FFMPEG):

<ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
  <PackageReference Include="VisioForge.CrossPlatform.Libav.Windows.x64" Version="2026.*" />
</ItemGroup>

Optimización de rendimiento

Para rendimiento óptimo en todas las plataformas:

  1. Use aceleración de hardware cuando esté disponible
  2. Ajuste la resolución de video basándose en las capacidades del dispositivo objetivo
  3. Considere las restricciones de memoria en dispositivos móviles al procesar archivos de medios grandes

Solución de problemas comunes

  • Pantalla de video en blanco: Asegúrese de que los permisos adecuados estén otorgados en plataformas móviles
  • Codecs faltantes: Verifique que todos los paquetes redistributables específicos de plataforma estén correctamente instalados
  • Problemas de rendimiento: Verifique que la aceleración de hardware esté habilitada cuando esté disponible
  • Errores de despliegue: Confirme que los identificadores de runtime estén correctamente especificados para la plataforma objetivo

Conclusión

El SDK de VisioForge proporciona una solución completa para agregar potentes capacidades multimedia a sus aplicaciones .NET MAUI. Siguiendo las instrucciones de configuración específicas de plataforma y las mejores prácticas descritas en esta guía, puede crear aplicaciones multiplataforma ricas con características avanzadas de video y audio.

Para ejemplos adicionales y código de muestra, visite nuestro repositorio de GitHub.

Siguientes pasos