[問題] 請問如何達到SoundPlayer與程式內容的同步?

看板C_Sharp (C#)作者 (市政府7F)時間17年前 (2008/09/05 15:30), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
大家好 小弟正在做一個程式 可以把演講的.wav檔和文字稿同步 文字稿常常有好幾十頁,邊聽音檔還要邊自己捲動文字檔視窗 蠻麻煩的,所以才想實作這個功能 我的作法是先把文字稿以每分鐘為單位切割 放入字串陣列 播放音檔 使用timer計時,每一分鐘show一個字串 問題來了,SoundPlayer的作法是產生額外的執行緒播放音檔 而soundplayer.Play()以後要一段時間以後聲音才會出來 因此timer無法精確的計時 試過的錯誤方式如下: ===================================================== soundplayer.Play(); timer.Start(); 聲音還沒有出來的時候,timer就已經跑了 ===================================================== soundplayer.PlaySync(); timer.Start(); 使用目前的執行緒播放音檔,播放完前timer不會計時 ===================================================== soundplayer.Load(); 也有試過LoadAsync() soundplayer.Play(); timer.Start(); 聲音還沒出來,timer就開始跑了 原本以為是load的時間,原來不是 這表示在load完成到播放出聲音之間有一段空白時間嗎? ====================================================== soundplayer.Play(); Thread.Sleep(soundplayer.LoadTimeout); timer.Start(); 以為LoadTimeout是load的時間,於是先等待這段時間 可是這樣timer會在聲音出來以後幾秒才開始計時 總而言之,沒有辦法在聲音播放出來的同時顯示第一個字串 而且soundplayer好像也沒有判斷是否播放中的屬性 實在找不到方式,請各位大大不吝指教 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.216.193
文章代碼(AID): #18mE0i5K (C_Sharp)
文章代碼(AID): #18mE0i5K (C_Sharp)