2508181020

This commit is contained in:
jasonchenwork 2025-08-18 10:29:00 +08:00
parent 4f2f7cb370
commit cf9fe3a0e6

View File

@ -66,8 +66,8 @@ namespace DualScreenDemo
private const int GWL_EXSTYLE = -20;
private const int WS_EX_TOPMOST = 0x00000008;
private const uint SWP_NOZORDER = 0x0004;
private MediaService _mediaService0= new MediaService();
private MediaService _mediaService1= new MediaService();
private MediaService _mediaService0 = new MediaService();
private MediaService _mediaService1 = new MediaService();
public static OverlayForm overlayForm;
public bool isMuted = false;
@ -95,7 +95,7 @@ namespace DualScreenDemo
HttpServer.OnDisplayBarrage += DisplayBarrageOnOverlay;
MonitorMediaEvents();
}
private void VideoPlayerForm_Load(object sender, EventArgs e)
{
@ -121,7 +121,7 @@ namespace DualScreenDemo
}
else
{
_mediaService0.SetVideoOutput(PrimaryForm.Instance.videoPanel.Handle,PrimaryForm.Instance.videoPanel.Width,PrimaryForm.Instance.videoPanel.Height);
_mediaService0.SetVideoOutput(PrimaryForm.Instance.videoPanel.Handle, PrimaryForm.Instance.videoPanel.Width, PrimaryForm.Instance.videoPanel.Height);
_mediaService1.SetVideoOutput(this.Handle, secondMonitor.Bounds.Width, secondMonitor.Bounds.Height);
PlayNextSong();
}
@ -148,7 +148,7 @@ namespace DualScreenDemo
APARTMENTTHREADED = 0x2,
MULTITHREADED = 0x0
}
// 同步畫面事件
public void SyncToPrimaryMonitor()
{
@ -254,8 +254,8 @@ namespace DualScreenDemo
overlayForm.HidePauseLabel();
await _InitializeAndPlayMedia(songToPlay);
}
public async Task ReplayCurrentSong()
{
@ -264,12 +264,12 @@ namespace DualScreenDemo
return;
}
else
{
{
await _InitializeAndPlayMedia(SongList.Current());
}
}
private async Task _InitializeAndPlayMedia(SongData song)
{
try
@ -333,14 +333,22 @@ namespace DualScreenDemo
{
string pathToPlay = song.getFile();
_mediaService0.LoadMedia(pathToPlay, 0);
_mediaService0.Mute(isMuted);
_mediaService1.LoadMedia(pathToPlay, song.isPublicSong ? 0 : 1);
_mediaService1.Mute(isMuted);
if (song.isPublicSong)
{
isVocalRemoved = true;
}
else
{
isVocalRemoved = false;
}
_ToggleVocalRemoval(isVocalRemoved);
// 音量處理
//SetVolume(isMuted ? 0 : previousVolume);
SetVolume(100+song.getBasic().getDbChange());
SetVolume(100 + song.getBasic().getDbChange());
if (isSyncToPrimaryMonitor) SyncToPrimaryMonitor();
return Task.CompletedTask;
}
@ -459,19 +467,16 @@ namespace DualScreenDemo
}
public bool Mute(bool isMuted)
{
if(isMuted){
if(isVocalRemoved){
_mediaService0.Mute(true);
_mediaService1.Mute(false);
}else{
_mediaService0.Mute(false);
_mediaService1.Mute(true);
}
}else{
if (isMuted)
{
_ToggleVocalRemoval(isVocalRemoved);
}
else
{
_mediaService0.Mute(false);
_mediaService1.Mute(false);
}
return isMuted;
}
public void SetVolume(int volume)
@ -482,24 +487,21 @@ namespace DualScreenDemo
}
public int GetVolume()
{
return _mediaService1.GetVolume();
}
private bool isVocalRemoved = true;
public void ToggleVocalRemoval()
{
isVocalRemoved=!isVocalRemoved;
if(isVocalRemoved){
_mediaService0.Mute(true);
_mediaService1.Mute(false);
}else{
_mediaService0.Mute(false);
_mediaService1.Mute(true);
}
//int trackIndex = isVocalRemoved ? 1:0;
//_mediaService.SetAudioTrack(trackIndex);
isVocalRemoved = _ToggleVocalRemoval(!isVocalRemoved);
OverlayForm.MainForm.ShowTopRightLabelTime(isVocalRemoved ? "無人聲" : "有人聲");
}
private bool _ToggleVocalRemoval(bool isVocal)
{
_mediaService0.Mute(isVocal);
_mediaService1.Mute(!isVocal);
return isVocal;
}
}
}