如何從mp3的id3v1 tag中讀出音樂長度 |
答題得分者是:shunchia63
|
superrakce
一般會員 發表:24 回覆:35 積分:11 註冊:2006-10-09 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
我有過同樣的需求,我是用這個免費VCL解決的。
http://clarktisdale.com/d-mp3.php |
superrakce
一般會員 發表:24 回覆:35 積分:11 註冊:2006-10-09 發送簡訊給我 |
|
shunchia63
高階會員 發表:26 回覆:141 積分:198 註冊:2007-05-22 發送簡訊給我 |
|
superrakce
一般會員 發表:24 回覆:35 積分:11 註冊:2006-10-09 發送簡訊給我 |
|
shunchia63
高階會員 發表:26 回覆:141 積分:198 註冊:2007-05-22 發送簡訊給我 |
<textarea class="c#" rows="10" cols="60" name="code"> System.Int64 PlaySec;
PlaySec = -1;
IGraphBuilder graphBuilder = null;
IMediaSeeking mediaSeeking = null;
graphBuilder = (IGraphBuilder)new FilterGraph();
int hr = graphBuilder.RenderFile(filename, null);
mediaSeeking = (IMediaSeeking)graphBuilder;
mediaSeeking.GetDuration(out PlaySec);
PlaySec = PlaySec / 10000000; </textarea>
以上為C#Code請改成Dephi Code 即可! 重點 IMediaSeeking.GetDuration
編輯記錄
shunchia63 重新編輯於 2007-06-14 21:22:30, 註解 無‧
|
shunchia63
高階會員 發表:26 回覆:141 積分:198 註冊:2007-05-22 發送簡訊給我 |
|
superrakce
一般會員 發表:24 回覆:35 積分:11 註冊:2006-10-09 發送簡訊給我 |
===================引 用 shunchia63 文 章=================== <textarea class="c#" rows="10" cols="60" name="code">????????????System.Int64 PlaySec; ????????????PlaySec = -1; ????????????IGraphBuilder graphBuilder = null; ????????????IMediaSeeking mediaSeeking = null; ????????????graphBuilder = (IGraphBuilder)new FilterGraph(); ????????????int hr = graphBuilder.RenderFile(filename, null); ????????????mediaSeeking = (IMediaSeeking)graphBuilder; ????????????mediaSeeking.GetDuration(out PlaySec); ????????????PlaySec = PlaySec / 10000000; </textarea> 以上為C#Code請改成Dephi Code 即可! 重點 IMediaSeeking.GetDuration 的確是很精準 小弟不才,光是改code就弄了一個禮拜 所以現在才結案,抱歉 不過並沒用到 IGraphBuilder graphBuilder 也能抓到時間,能否說明這涵式作用? 多謝指教
編輯記錄
superrakce 重新編輯於 2007-06-22 19:19:19, 註解 無‧
|
superrakce
一般會員 發表:24 回覆:35 積分:11 註冊:2006-10-09 發送簡訊給我 |
抓時間我是這樣寫
第一段 fg.Active := true; fg.ClearGraph; fg.RenderFile('D:\music\Can`t Stop.MP3'); fg.Play; 第二段 var totaltime:int64; begin if not FG.Active then exit; //不是播放就離開 (FG as IMediaSeeking).GetDuration(TotalTime); TotalTime := TotalTime div 10000000; TrackBbar.max := TotalTime; label1.Caption := inttostr(TotalTime); end; |
shunchia63
高階會員 發表:26 回覆:141 積分:198 註冊:2007-05-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |