diff --git a/VideoPlayerForm.cs b/VideoPlayerForm.cs index 636c7b9..55d24bb 100644 --- a/VideoPlayerForm.cs +++ b/VideoPlayerForm.cs @@ -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; + } } }