Files
annotations/Azaion.Suite/Services/VlcMediaPlayerService.cs
T

66 lines
1.8 KiB
C#

using Azaion.Common.Services;
using LibVLCSharp.Shared;
namespace Azaion.Suite.Services;
public class VlcMediaPlayerService : IMediaPlayerService
{
private readonly MediaPlayer _mediaPlayer;
private readonly LibVLC _libVlc;
public VlcMediaPlayerService(MediaPlayer mediaPlayer, LibVLC libVlc)
{
_mediaPlayer = mediaPlayer;
_libVlc = libVlc;
_mediaPlayer.Playing += (s, e) => Playing?.Invoke(s, e);
_mediaPlayer.Paused += (s, e) => Paused?.Invoke(s, e);
_mediaPlayer.Stopped += (s, e) => Stopped?.Invoke(s, e);
_mediaPlayer.PositionChanged += (s, e) => PositionChanged?.Invoke(s, e);
_mediaPlayer.LengthChanged += (s, e) => LengthChanged?.Invoke(s, e);
}
public void Play() => _mediaPlayer.Play();
public void Pause() => _mediaPlayer.Pause();
public void Stop() => _mediaPlayer.Stop();
public long Time
{
get => _mediaPlayer.Time;
set => _mediaPlayer.Time = value;
}
public float Position
{
get => _mediaPlayer.Position;
set => _mediaPlayer.Position = value;
}
public int Volume
{
get => _mediaPlayer.Volume;
set => _mediaPlayer.Volume = value;
}
public bool IsPlaying => _mediaPlayer.IsPlaying;
public long Length => _mediaPlayer.Length;
public void SetMedia(string mediaPath)
{
using var media = new Media(_libVlc, mediaPath);
_mediaPlayer.Media = media;
}
public void TakeSnapshot(uint num, string path, uint width, uint height)
{
_mediaPlayer.TakeSnapshot(num, path, width, height);
}
public event EventHandler? Playing;
public event EventHandler? Paused;
public event EventHandler? Stopped;
public event EventHandler? PositionChanged;
public event EventHandler? LengthChanged;
}