Media Player SDK para C# .NET — Reproductor de Video, Reproductor de Audio y API de Streaming¶
Introducción¶
El Media Player SDK para .NET es una API de reproductor de video en C# que te permite reproducir archivos de video y audio, streams de red (RTSP, HLS, MPEG-DASH) y contenido especial como videos de 360 grados en tus aplicaciones .NET. Reemplaza el código de reproducción DirectShow de bajo nivel y la integración con Windows Media Player SDK con una API async moderna — abre un archivo, inicia la reproducción y controla la búsqueda y el volumen en pocas líneas de C#.
El SDK usa decodificación basada en GStreamer con aceleración por hardware y se ejecuta en Windows, macOS, Linux, Android e iOS. Ya sea que necesites construir un reproductor de video de escritorio, integrar reproducción de medios en una app de kiosko o transmitir feeds RTSP desde cámaras IP, la API lo cubre.
Inicio Rápido¶
1. Instalar Paquetes NuGet¶
dotnet add package VisioForge.DotNet.MediaPlayer
Agrega dependencias nativas específicas de plataforma:
<!-- Windows x64 -->
<PackageReference Include="VisioForge.CrossPlatform.Core.Windows.x64" Version="2025.11.0" />
<PackageReference Include="VisioForge.CrossPlatform.Libav.Windows.x64" Version="2025.11.0" />
<!-- macOS -->
<PackageReference Include="VisioForge.CrossPlatform.Core.macOS" Version="2025.9.1" />
<!-- Linux x64 -->
<PackageReference Include="VisioForge.CrossPlatform.Core.Linux.x64" Version="2025.11.0" />
<PackageReference Include="VisioForge.CrossPlatform.Libav.Linux.x64" Version="2025.11.0" />
Para la lista completa de paquetes y soporte de frameworks de UI (WinForms, WPF, MAUI, Avalonia), consulta la Guía de Instalación.
2. Inicializar el SDK¶
Llama a InitSDKAsync() una vez al iniciar la aplicación antes de usar cualquier funcionalidad de reproducción:
using VisioForge.Core;
await VisioForgeX.InitSDKAsync();
3. Reproducir Video en C# (Ejemplo Mínimo)¶
using VisioForge.Core;
using VisioForge.Core.MediaPlayerX;
using VisioForge.Core.Types.X.Sources;
// Crear instancia del reproductor vinculada a un control VideoView
var player = new MediaPlayerCoreX(videoView);
// Abrir un archivo de video
var source = await UniversalSourceSettings.CreateAsync(
new Uri("C:\\Videos\\sample.mp4"));
await player.OpenAsync(source);
// Iniciar reproducción
await player.PlayAsync();
// ... cuando termine:
await player.StopAsync();
await player.DisposeAsync();
4. Limpieza al Cerrar¶
VisioForgeX.DestroySDK();
Flujo de Trabajo Principal¶
Toda aplicación de reproductor de medios sigue el mismo patrón:
- Inicializar SDK —
VisioForgeX.InitSDKAsync()(una vez por vida de la aplicación) - Crear reproductor —
new MediaPlayerCoreX(videoView)para video, o sin vista para solo audio - Abrir medio —
await player.OpenAsync(source)con una ruta de archivo o URL de stream - Reproducir —
await player.PlayAsync() - Controlar reproducción — buscar con
Position_SetAsync(), pausar conPauseAsync(), ajustar volumen - Detener —
await player.StopAsync() - Liberar —
await player.DisposeAsync()libera todos los recursos - Destruir SDK —
VisioForgeX.DestroySDK()al cerrar la aplicación
Escenarios Comunes de Reproductor de Video en C¶
Reproducir Archivo de Video en C# (MP4, AVI, MKV)¶
Abre y reproduce cualquier archivo de video soportado con detección automática de codecs:
var source = await UniversalSourceSettings.CreateAsync(
new Uri("movie.mp4"));
await player.OpenAsync(source);
await player.PlayAsync();
Ver tutorial completo: Construir un Reproductor de Video en C#
Reproducir Stream RTSP en C¶
Reproduce video en vivo desde cámaras IP y fuentes RTSP. Soporta RTSP, HTTP, HLS y MPEG-DASH:
var source = await UniversalSourceSettings.CreateAsync(
new Uri("rtsp://admin:password@192.168.1.100:554/stream"));
await player.OpenAsync(source);
await player.PlayAsync();
Reproducción Solo de Audio¶
Reproduce archivos de audio (MP3, AAC, FLAC, WAV) sin vista de video:
var player = new MediaPlayerCoreX(); // no se necesita VideoView
var source = await UniversalSourceSettings.CreateAsync(
new Uri("music.mp3"));
await player.OpenAsync(source);
await player.PlayAsync();
Extraer Fotograma del Video¶
Captura una imagen fija de la posición de reproducción actual:
// Obtener el fotograma actual como bitmap de SkiaSharp
var frame = await player.Snapshot_GetAsync();
if (frame != null)
{
using var data = frame.Encode(SKEncodedImageFormat.Jpeg, 85);
using var stream = File.OpenWrite("screenshot.jpg");
data.SaveTo(stream);
}
Ver: Obtener un Fotograma Específico de un Archivo de Video
Control de Búsqueda, Volumen y Velocidad¶
// Buscar una posición específica
await player.Position_SetAsync(TimeSpan.FromSeconds(30));
// Obtener posición actual y duración
var position = await player.Position_GetAsync();
var duration = await player.DurationAsync();
// Ajustar volumen (0.0 a 1.0)
player.Audio_OutputDevice_Volume = 0.8;
// Cambiar velocidad de reproducción (0.25x a 4.0x)
await player.Rate_SetAsync(1.5);
Reproducción en Bucle y Reproducción de Segmentos¶
Reproduce un segmento específico de un archivo o repite continuamente:
// Habilitar modo bucle
player.Loop = true;
// Reproducir un rango de tiempo específico
player.StartPosition = TimeSpan.FromSeconds(10);
player.StopPosition = TimeSpan.FromSeconds(60);
Ver: Modo Bucle y Reproducción por Rango de Posición
Formatos Soportados¶
| Categoría | Formatos |
|---|---|
| Contenedores de Video | MP4, AVI, MKV, WMV, WebM, MOV, TS, MTS, FLV |
| Formatos de Audio | MP3, AAC, WAV, WMA, FLAC, OGG, Vorbis |
| Codecs de Video | H.264, H.265/HEVC, VP8, VP9, AV1, MPEG-2 |
| Protocolos de Streaming | RTSP, HTTP, HLS, MPEG-DASH |
Soporte de Plataformas¶
| Plataforma | Frameworks de UI | Notas |
|---|---|---|
| Windows x64 | WinForms, WPF, WinUI, MAUI, Avalonia, Consola | Conjunto completo de características incluyendo motor DirectShow |
| macOS | MAUI, Avalonia, Consola | Renderizado basado en AVFoundation |
| Linux x64 | Avalonia, Consola | Decodificación basada en GStreamer |
| Android | MAUI | Via integración MAUI |
| iOS | MAUI | Via integración MAUI |
Para implementaciones multiplataforma, ver: Reproductor de Video Multiplataforma — Guía Avalonia & MAUI
Documentación para Desarrolladores¶
Guías¶
- Construir un Reproductor de Video en C#
- Construir un Reproductor de Video en VB.NET
- Reproductor de Video Multiplataforma — Avalonia & MAUI
- Implementación de Reproductor Avalonia
- Implementación de Reproductor Android
- Modo Bucle y Rango de Posición
- Todas las Guías
Ejemplos de Código¶
- Obtener un Fotograma de un Archivo de Video
- Reproducir un Fragmento de un Archivo
- Mostrar el Primer Fotograma
- Reproducción desde Memoria
- API de Lista de Reproducción
- Reproducción de Video en Reversa
- Todos los Ejemplos de Código