[問題] DirectShow的問題,關於IMediaSeeking

看板C_and_CPP作者 (liyata)時間14年前 (2009/11/16 17:16), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
各位板友好,小弟有個關於IMediaSeeking的問題如下 小弟使用DirectShow寫了一個SourceFilter來播放音樂 另外query了IMediaSeeking這個interface用來查詢音檔的總長度 一開始運作都正常 但是遇到一個問題是 如果我把SourceFilter的音檔直接換掉,換成另一個檔案 雖然可以正常換歌播放,但是IMediaSeeking::GetDuration()抓到的長度 不會更新成新的音檔長度,還是會抓到之前的長度 請問這應該是什麼原因造成的呢? 附註: 我用的sourcefilter 是從sample裡面的Async改出來的, 換歌時直接Call他的Load() function換路徑給它 換歌前有用IMediaControl下Stop的動作再Load,確定Load成功才Run, 播放都OK就是取長度這塊不對 XD 希望有大大可以給我一個方向去修正,或是直接點出我的錯誤 感恩~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.67.90.20

11/16 21:37, , 1F
你的IMediaSeeking有重新query嗎?
11/16 21:37, 1F

11/17 00:20, , 2F
回樓上: 有耶 我也有試過重新宣告一個新的IMediaSeeking
11/17 00:20, 2F

11/17 00:21, , 3F
然後去Query GraphBuilder的interface 結果抓到一樣是舊的.
11/17 00:21, 3F

11/17 01:17, , 4F
開新檔案前,controler 先 call stop 看看
11/17 01:17, 4F

11/17 09:18, , 5F
d大: 我有用IMediaControl->Stop() 後再load新檔案 @_@
11/17 09:18, 5F
文章代碼(AID): #1B0HXoHS (C_and_CPP)