[問題] 請問如何達到SoundPlayer與程式內容的同步?
大家好
小弟正在做一個程式
可以把演講的.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
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章