windows下 利用CoreAudio,Libmad,和3D環繞音效原理實現的MP3播放器
(博主qq,1204802552,歡迎交流)
之前公司的專案用到了CoreAudio API,這是windows下一套全新的用於開發音訊應用程式的API,之前我也寫過相關的部落格
後來有一段時間,我迷上了3D環繞音效的音樂,也就是大家熟知的Echo回聲裡面比較有特色的一些音樂
至於Echo回聲裡面的3D音樂是如何製作的,我不是很清楚,但是他們的音樂效果還是很好的,博主很喜歡。
唯一的限制就是,個人好像並不能使用Echo來製作3D音樂(不知道現在有沒有這個功能了),也就是說,除了一些特定的曲目我們可以享受到3D音效外,其他的音樂就是普通的音效,對於喜愛聽歌的我來說,有些無法忍受,於是乎。。。。。
我突然有個想法:自己寫個程式,來實現3D音樂播放器的效果,這樣的話,不管是什麼音樂,只要通過我這個播放器,就可以聽到3D環繞的效果,想想還是很棒的
說做就做,大概思路就是:
1. 讀取並解碼MP3檔案(用Libmad實現,當然也有其他的開源庫可以使用)
2. 利用3D環繞音效的原理,處理解碼MP3檔案得到的PCM資料
3. 將經過處理後的PCM資料,壓入音訊緩衝區進行播放
然後就是逐步完成工作
第一步很簡單,如果是使用Libmad來做,我們只要參照他自帶的源程式就可以了,或者網上找找例子;需要注意的是,libmad輸出的是整型數,而後我們處理時是需要浮點型的,需要做好資料之間的轉換,直接強制轉換型別是會有很大問題滴
第二步,做3d音效處理,原理在我的前一篇部落格有,大家可以看看
第三步,就是播放了,怎麼播放,在我前面的部落格裡有說到,怎麼使用CoreAudio API 開發應用
有個問題需要注意:解碼的速度是非常快的,幾秒鐘就可以完成工作;如果加入3D音效環繞處理後,解碼+處理的時間會變長,但總時長也只在10秒左右,跟MP3的幾分鐘的播放時間相比,已經很短了
如果採用邊解碼邊播放的形式,勢必會影響解碼的整體速度,我採用的是緩衝檔案方式,將解碼處理後的資料儲存在一個檔案中,解碼完成後再從檔案中讀取需要播放的資料
目前播放器的基本功能已經完成,效果還不錯的,想聽什麼歌的環繞效果都可以
相關推薦
windows下 利用CoreAudio,Libmad,和3D環繞音效原理實現的MP3播放器
(博主qq,1204802552,歡迎交流) 之前公司的專案用到了CoreAudio API,這是windows下一套全新的用於開發音訊應用程式的API,之前我也寫過相關的部落格 後來有一段時間,我迷上了3D環繞音效的音樂,也就是大家熟知的Echo回聲
Windows下Python安裝numpy+mkl,Scipy和statsmodels
log gif csdn 沒有 解決 static 改名 分享 最終 最近做時間序列分析需要用到Python中的statsmodels,但是安裝過程中遇到很頭疼的問題,Google、Stackover各種都沒有找到合適的解決辦法,而且貌似還有很多同學也在吐槽Windows下
Windows下編譯eXosip、osip,以及UAC和UAS的例子
osip2.dll osipparser2.lib osipparser2.dll 第三步,解壓,編譯eXosip 進入libeXosip2-3.6.0\platform\vsnet目錄,用VS2010直接開啟eXosip.sln檔案,專案自動轉換: 1.將osip2.lib,osip2
linux路徑分隔符'/'與windows下的分隔符'\',以及java項目,web項目讀取項目的路徑
oid ont resource light ros ren -i microsoft 配置文件 1, linux下的文件分隔符是‘/‘, windows下的文件分隔符為‘\‘。但是‘\‘這個符號是轉義符。如果需要在console輸出‘\‘這個符號的,你需要輸入‘\\‘。另
windows下安裝python的numpy,scipy,sklearn
推斷 bsp 計算機 ins rip 圖片 success 64位 ima 前提環境(根據自己所安裝的為準): python3.7 windows10 首先,要先下載好這三種包下載地址為 https://www.lfd.uci.edu/~gohlke/pythonlibs
windows下idea編寫WordCount程式,並打jar包上傳到hadoop叢集執行(傻瓜版)
通常會在IDE中編制程式,然後打成jar包,然後提交到叢集,最常用的是建立一個Maven專案,利用Maven來管理jar包的依賴。 一、生成WordCount的jar包 1. 開啟IDEA,File→New→Project→Maven→Next→填寫Groupld和Artifactld→Ne
windows 下關於檔案被佔用,如何清理問題
有時候我們在刪除或者替換檔案時,系統會提示檔案被佔用 可是我們找了半天也沒有找到在什麼地方開啟,此時我們該怎麼辦呢? 1.開啟“工作管理員” 2. 在效能”選項卡里,點選“開啟資源監視器” 3.在開啟的資源監視器中,下方的關聯的控制代碼的搜尋框裡,搜尋被佔用的檔名,然後根據列表裡搜尋出來的
Windows下vagrant建立VirtualBox後,運用SecureCRT執行rz,sz命令上傳下載檔案
最近因為學習的需要,第一次接觸了vagrant。因為是Windows環境,所以通過cmd中以進去之後,也無法複製黏貼。 rz,sz便是Linux/Unix同Windows進行ZModem檔案傳輸的命令列工具。 windows端需要支援ZModem的telnet/
RabbitMQ的學習(一):Windows下安裝及配置RabbitMQ,erlang環境變數
前言:從本章開始,慢慢去了解並深化架構師成長路上所需要的基礎框架:訊息中介軟體; 從這裡開始,會一直往下學習,從what to do到how to do 到why to do。先學會如何使用中介軟體,到後面慢慢去體會中介軟體原理及精髓,然後到最後自己再搭建一個簡單的中介軟體框架。這是該分類的
Windows下安裝Matplotlib的教程,及常見問題彙總
Matplotlib python3是一款視覺化繪圖工具工具,其在Windows下的安裝過程如下: (1)在Matplotlib的官網下載電腦對應的版本,網址為:https://pypi.org/project/matplotlib/#files。 (2)將在下
Windows下Tensorflow-GPU的安裝,Tensorboard的使用,以及過程中遇到的各種坑
1、安裝Anaconda Anaconda 4.3.1 (Python 3.6) 下載頁:https://www.continuum.io/downloads 安裝後,如果conda下載包的速度很慢,可以執行下面的命令設定國內映象 conda con
windows下本地連線MYSQL資料庫,報1130錯誤的解決方法
原連結重灌MySQL,由於不知道重灌之前的root密碼,使用重灌之後的密碼連線Mysql資料,總報 ERROR 1130: host 'localhost' not allowed to connect to this MySQLserver,不能連線資料庫,猜測使用者許可權
本人64位windows下安裝最新版XGBoost,附操作步驟圖
最新更新的XGBoost與老版安裝方式不再一樣,具體安裝步驟如下: 1、 材料 系統:win7 64位 sp5 (win7、win10親測都可以) 下載安裝cmake: 下載安裝VS2013 sp5 安裝git,安裝Anaconda,百度就有 2、安裝步驟 開
Windows下 caffe編譯好檔案,帶例子
執行Lenet 首先,配置環境變數,.\caffe-master\Build\x64\Release 例子在解壓包裡的 caffe-master/examples/mnist//train_lenet .bat 對應的mnist資料已轉換好,配置好環境即可執行
windows下關閉指定埠服務,解決tomcat端口占用問題
<iframe id="cproIframe_595135_2" width="250" height="250" src="http://cb.baidu.com/ecom?adn=3&at=231&aurl=&cad=1&ccd=24
在windows下使用pycharm寫程式碼,遠端連線linux 的資料庫
點選設定的按鈕,選擇show all 點選+號 選中SSH Interpreter,填寫伺服器地址,使用者名稱 點選next,填寫密碼 點選next,填寫linux伺服器的python路徑和專案在linux伺服器的儲存路徑 點選fi
Windows下安裝gcc與gdb,實現code blocks配置第一步
Windows下安裝gcc與gdb,實現code blocks配置 2.下載 3.按提示一步步點下來,當Browers時一定要記住這個檔案所在的位置。 4.進入介面,選中mingw32-gcc-g++(注意class屬性一定要為bin)此行,然後右擊make for
windows下利用python 2.7獲取電腦上所有的wifi名稱和密碼
# -*- coding: UTF-8 -*- import os import sys reload(sys) sys.setdefaultencoding('utf-8') # 定義一個函式checkWIFI,獲取電腦連線過的所有wifi名稱和密碼,結果以列表形式返回
Windows下使用vim編寫程式碼,使用nmake編譯程式碼,使用vs來除錯程式碼
1、編寫程式碼 2、編寫Makefile,如果要除錯, 2.1、需要在編譯的時候加上/Zi ( Generates complete debugging information),編譯由cl.exe來完成 2.2、需要在連結選項中指定/DEBUG,(The /DEBUG option creates
windows下利用IIS搭建web和ftp服務以及防火牆配置
第一步:找到程式與功能裡面的啟動或關閉windows功能。選擇如下圖:第二步:點選計算機管理,選擇IIS。將底下預設的Default web site網站關閉。然後右擊網站,新建一個網站,填寫如下資訊。網站名稱隨便自己起,網站根目錄自己選擇一個資料夾。協議如何你的網站網站得到