国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

VB.NET 使用DirectSound 3

2024-07-10 13:12:16
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
關(guān)鍵字: vb.net directx 9 directsound audiovideoplayback 作者:董含君

本來(lái)打算開(kāi)始3d sound的,還有很多東西前面漏掉了,所以先補(bǔ)充一下

希望大風(fēng)跟么么茶能早點(diǎn)完成direct3d.

=============以上是廢話=======================

前面的例子都是讀取的wav

打開(kāi)資源管理器你會(huì)發(fā)現(xiàn)他們的內(nèi)存使用情況.

有多大的wav內(nèi)存就要消耗多少.一個(gè)4分鐘以內(nèi)的音樂(lè)消耗大概30m左右.

當(dāng)然也要看音質(zhì),這個(gè)跟體積是成正比的.如果你打算做播放器,而不是

游戲音效(游戲背景音樂(lè)現(xiàn)在都用mp3或者其他要求即時(shí)性不強(qiáng)的方法

來(lái)實(shí)現(xiàn))那么可以考慮用流式輸入.就是把new secondarybuffer(filename...

換成io.stream類才行

io.stream不能直接繼承....

1 自己寫(xiě)一個(gè)soundstream,可以,但是我比較懶,不干
2 找現(xiàn)成的,filestream

于是原來(lái)的
buf = new secondarybuffer("g:/media/wav/rod2.wav", desc, ad)
變成了現(xiàn)在的
dim s as new filestream("g:/media/wav/rod2.wav", filemode.open)
buf = new secondarybuffer(s, desc, ad)

(其實(shí)還有很多辦法,但是那個(gè)電子鼓的演示實(shí)在太長(zhǎng)...微軟又沒(méi)有提供

相關(guān)的代碼)

經(jīng)過(guò)測(cè)試,不使用stream的時(shí)候播放一個(gè)15m的程序消耗內(nèi)存38m

使用stream的時(shí)候,消耗內(nèi)存高達(dá)50多m!!!!

我設(shè)置緩沖區(qū)+異步播放同樣狂吃內(nèi)存.

看來(lái)filestream就是要全裝了(以后慢慢研究)

或者為了節(jié)約內(nèi)存,自己寫(xiě)soundstream類吧

如果你僅僅想用來(lái)播放音樂(lè),強(qiáng)烈建議您使用audio類

這個(gè)不應(yīng)該算dsound,但是還是順便提一下吧

首先再工程里面添加對(duì)audiovideoplayback的引用

然后imports
imports microsoft.directx.audiovideoplayback

用的是后就簡(jiǎn)單了
const fn = "g:/media/wav/teru_teru_momiji.wav"
dim au as new audio(fn)
au.play()

而且僅用了3m的內(nèi)存,超級(jí)節(jié)約.

最重要的,還可以網(wǎng)絡(luò)播放.

dim au as audio
dim u as new system.uri("mms://music.comicme.net/free/animemusic/[m][美鳥(niǎo)伴身邊][midori][美鳥(niǎo)の日々]/ed%20single%20-%20もう少し…もう少し…/01%20-%20もう少し…もう少し….wma")
au = audio.fromurl(u)
au.play()

不知道是應(yīng)該哭還是應(yīng)該笑.微軟對(duì)托管的directx進(jìn)行了封裝,就把原來(lái)

的directshow 以及 directsound 的一部分放進(jìn)去了(video 跟 audio

正好對(duì)應(yīng)著dshow 跟 dsound&dmusic)

通過(guò)代碼可以得知,實(shí)在是簡(jiǎn)單太多了.問(wèn)題是我想在d3dsurface里面播放

動(dòng)畫(huà)只能自己想辦法了....

==============以下開(kāi)始廢話==============

本來(lái)還3d的,結(jié)果這里浪費(fèi)了這么多時(shí)間.

如果你打算播放音樂(lè),那么老老實(shí)實(shí)的用audio類.dsound只能放wav(我還

沒(méi)找到播放其他格式的方法.formats里面只有倆,一個(gè)pcm一個(gè)flaot)

而且播放的時(shí)候內(nèi)存需求超大,做音效的時(shí)候,如果數(shù)量比較多,那么要

考慮定期釋放了.不然光音效就占用了好幾十m,圖像就沒(méi)地方了...


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新化县| 六枝特区| 郧西县| 石楼县| 黄龙县| 晋宁县| 化隆| 澄迈县| 新竹市| 农安县| 德昌县| 景洪市| 呼图壁县| 卢湾区| 赤峰市| 江北区| 伊川县| 宁化县| 贡山| 仙游县| 河间市| 珠海市| 金山区| 深圳市| 宜君县| 鄂托克旗| 陕西省| 会宁县| 吐鲁番市| 鹰潭市| 宝清县| 陇南市| 陕西省| 宁化县| 华坪县| 双江| 江华| 邯郸县| 宜丰县| 龙州县| 南溪县|