2508190933

This commit is contained in:
jasonchenwork 2025-08-19 09:34:10 +08:00
parent f4b38cd06e
commit cd25b63116

View File

@ -13,11 +13,14 @@ namespace DualScreenDemo.Services
{ {
Core.Initialize(); Core.Initialize();
_libVLC = new LibVLC( _libVLC = new LibVLC(
"--vout=automatic",
"--h264-fps=25",
"--aout=directsound", "--aout=directsound",
"--network-caching=300", "--network-caching=250",
"--file-caching=300", "--file-caching=250",
"--audio-time-stretch" "--audio-time-stretch"
); );
_mediaPlayer = new MediaPlayer(_libVLC); _mediaPlayer = new MediaPlayer(_libVLC);
@ -26,9 +29,17 @@ namespace DualScreenDemo.Services
#region Player Setup #region Player Setup
public void SetVideoOutput(nint handle, int width, int height) public void SetVideoOutput(nint handle, int width, int height)
{ {
_mediaPlayer.Hwnd = handle; try
_mediaPlayer.AspectRatio = $"{width}:{height}"; {
_mediaPlayer.Scale = 0; _mediaPlayer.Hwnd = handle;
_mediaPlayer.AspectRatio = $"{width}:{height}";
_mediaPlayer.Scale = 0;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
} }
#endregion #endregion
@ -38,20 +49,67 @@ namespace DualScreenDemo.Services
public bool IsAtEnd() public bool IsAtEnd()
{ {
var duration = _mediaPlayer.Media?.Duration ?? 0; try
var time = _mediaPlayer.Time; {
return duration > 0 && Math.Abs(duration - time) < 1000; var duration = _mediaPlayer.Media?.Duration ?? 0;
var time = _mediaPlayer.Time;
return duration > 0 && Math.Abs(duration - time) < 1000;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return true;
}
} }
// public void LoadMedia(string filePath, int audioTrackIndex = 0)
// {
// try
// {
// Console.WriteLine($"LoadMedia. in");
// _media?.ParseStop();
// Console.WriteLine($"LoadMedia. ParseStop");
// _mediaPlayer.Stop();
// Console.WriteLine($"LoadMedia. Stop");
// _media?.Dispose();
// Console.WriteLine($"LoadMedia. Dispose");
// _media = new Media(_libVLC, filePath, FromType.FromPath);
// _media.AddOption(":audio-output=directsound");
// _media.AddOption($":audio-track={audioTrackIndex}");
// _mediaPlayer.Play(_media);
// }
// catch (Exception ex)
// {
// Console.WriteLine(ex.Message);
// }
// }
public void LoadMedia(string filePath, int audioTrackIndex = 0) public void LoadMedia(string filePath, int audioTrackIndex = 0)
{ {
_mediaPlayer.Stop(); try
_media?.Dispose(); {
Console.WriteLine($"LoadMedia. in");
_mediaPlayer.Stop();
_mediaPlayer.Media = null;
Console.WriteLine($"LoadMedia. Stop");
_media?.Dispose();
_media= null;
Console.WriteLine($"LoadMedia. Dispose");
_media = new Media(_libVLC, filePath, FromType.FromPath);
_media.AddOption(":audio-output=directsound");
_media.AddOption($":audio-track={audioTrackIndex}");
_mediaPlayer.Play(_media);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
_media = new Media(_libVLC, filePath, FromType.FromPath);
_media.AddOption(":audio-output=directsound");
_media.AddOption($":audio-track={audioTrackIndex}");
_mediaPlayer.Play(_media);
} }
public void Play() => _mediaPlayer.Play(); public void Play() => _mediaPlayer.Play();