全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2480
推到 Plurk!
推到 Facebook!

如何將音樂檔載入到記憶體中並播放出來, 而非先儲存在硬碟

答題得分者是:wameng
hipig
高階會員


發表:31
回覆:75
積分:111
註冊:2007-01-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-07 14:10:17 IP:140.126.xxx.xxx 未訂閱
您好
我有以下問題想請問一下
首先我將程式中會使用到的資源(游標 圖檔 ICON 和音效)都封裝成RES資源
而游標 圖檔 ICON我可以很正確的由資源檔中直接呼叫取用
但音效卻不行,我所使用的音效格式為MIDI及MP3(容量大小皆小於128KB)
看板上所找到的資料都是先將資源檔內的音樂解析出來存在目錄或特定位置
然後在呼叫播放元件播放,完畢或程式關閉後刪除
但我想直接利用宣告TMemoryStream的方式,然後播放在Memory中的資源,完畢後釋放
這方面的程式卻不知該如何擇寫(圖形可以用LoadFromResourceName的方式直接取用,但影音檔卻不知如何下手)
還請各位指導 感謝
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-07 15:40:35 IP:211.22.xxx.xxx 未訂閱
這篇連結應該可以解答你的需求,但是MP3是屬特殊編碼的音源,需要有codec,利用單純的WINAPI可能播放不出聲音來!~
===================引 用 hipig 文 章===================
您好
我有以下問題想請問一下
首先我將程式中會使用到的資源(游標 圖檔 ICON 和音效)都封裝成RES資源
而游標 圖檔 ICON我可以很正確的由資源檔中直接呼叫取用
但音效卻不行,我所使用的音效格式為MIDI及MP3(容量大小皆小於128KB)
看板上所找到的資料都是先將資源檔內的音樂解析出來存在目錄或特定位置
然後在呼叫播放元件播放,完畢或程式關閉後刪除
但我想直接利用宣告TMemoryStream的方式,然後播放在Memory中的資源,完畢後釋放
這方面的程式卻不知該如何擇寫(圖形可以用LoadFromResourceName的方式直接取用,但影音檔卻不知如何下手)
還請各位指導 感謝
hipig
高階會員


發表:31
回覆:75
積分:111
註冊:2007-01-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-08 16:18:19 IP:218.166.xxx.xxx 未訂閱
您好
那篇文章中sndPlaySound的部份似乎只能用於播放WAV檔
而我查詢到現在的結果,絕大多數都寫資源檔中的midi要先
解成檔案後利用mciSendString的方式播放
真的無法直接利用資源的方式嗎
另外MP3該用何種方式較為恰當
===================引 用 Stallion 文 章===================
這篇連結應該可以解答你的需求,但是MP3是屬特殊編碼的音源,需要有codec,利用單純的WINAPI可能播放不出聲音來!~
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-09-09 17:28:13 IP:61.31.xxx.xxx 訂閱
資源可用 TResourceStream 做載入,自行定義一個類型即可。
但重點出在於 播放元件是否支援 Stream 操作?

確定無論是在Mediaplayer or WindowsMediaplayer 並沒有透過 TStream 載入等類似方法。

因此可能需找三方元件來播放。
或者據說 TMediaPlayerMemoryFile 可以讓 TMediaplayer 透過 MemoryStream 載入,可以試試。

參考
系統時間:2024-04-20 6:59:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!