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