Ⅰ 怎麼用c語言播放特定目錄里的wav文件
用C語言播放音樂,一般需要額外的庫或者調用系統的API函數。
以Windows為例,可以通過PlaySound函數播放wav格式的音樂。示例如下,代碼在vc6.0中編譯通過。
#include<stdio.h>
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
int main()
{
PlaySound(TEXT("1.wav"),0,SND_FILENAME); //1.wav是要播放的音樂文件
return 0;
}
如果想播放mp3音樂可以使用如下代碼。
注意:生成程序後,請在cmd中執行此程序,不要在vc/vs的IDE中運行。#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#pragma comment(lib, "Winmm.lib")
int main(int argc, char *argv[])
{
//絕對地址形式
TCHAR fileName[]="ganlusi.mp3";
TCHAR shortName[MAX_PATH];
GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR));
TCHAR cmd[MAX_PATH+10];
wsprintf(cmd,"play %s",shortName);
mciSendString(cmd,NULL, 0, NULL);
Sleep(5 * 60 * 1000); //這里是防止一播放就結束做的延遲
return 0;
}
Ⅱ C#中的Form1.resx(資源文件)裡面存放了*.wav的音頻文件,怎麼讀取和播放
visual studio 2010環境下在C#程序中嵌入、播放 wav音頻文件 圖文介紹
分類: C#2012-08-24 09:25 511人閱讀 評論(1) 收藏 舉報
聲音資源文件可以放在外部調用播放,另一種方法是直接嵌入到程序裡面再調用播放。
想在製作的小工具程序中加入聲音,而且希望整個程序就只是一個可執行文件,可採用第二種方法。
1、嵌入wav音頻文件
新建一個windows窗體應用程序,
在解決方案資源管理器中選中需要加入wav聲音的項目,選擇該項目下的【properties】文件夾中的「recourse.rexs」,
雙擊打開,出現下圖所示畫面:
然後點擊【添加資源】旁邊的倒三角符號,選擇【添加現有文件】,找到想要添加的music.wav聲音文件添加進去,然後發現右邊的解決方案資源管理器項目中的【resource】文件夾,裡面增加了一個文件music.wav。
我們在左邊的resource.resx頁,選中音樂文件music.wav,
右下角會出現music.wav文件的屬性框,如下圖所示
把【在編譯時鏈接】那一項選擇為【嵌入在.resx】。就完成了wav音頻資源文件的嵌入。
2、播放wav音頻文件
使用SoundPlayer類來實現
在程序開頭引用庫:
using System.Media;
然後在你想要播放音樂的地方加入代碼:
SoundPlayer sp = newSoundPlayer(WindowsFormsApplication1(項目名).Properties.Resources.music);
sp.Play();
然後調試運行試試看,是否發出你想要的聲音了?
當然,你會發現生成的exe文件大了些,因為聲音資源已經嵌入到程序裡面了。
Ⅲ 如何用C++打開.wav音頻文件並讀出數據
有例子的:有源代碼的。
例子1:在VC中如何播放大型回WAV文件答
http://school.cfan.com.cn/pro/c/2006-12-03/1165123635d26810.shtml
例子2:
http://www.vckbase.com/document/viewdoc/?id=1800
Ⅳ 怎樣用c語言讀取WAV文件振幅信息
C也能像matlab一樣讀取wav格式文件!
用外置庫libsndfile,可以讀取數據,頻率,通道等等
以下是一段讀取sample.wav,將數據存入double格式的array:
#include "sndfile.h"
#pragma comment(lib, "libsndfile-1.lib")
void readwav(double output[length]){
SNDFILE *sf;
SF_INFO info;
int num_channels;
int num, num_items;
double *buf;
int f,sr,c;
int i,j;
info.format = 0;
sf = sf_open("sample.wav",SFM_READ,&info);
if (sf == NULL){
printf("Failed to open the file.\n");
exit(-1);
}
f = info.frames;
sr = info.samplerate;
c = info.channels;
printf("frames=%d\n",f);
printf("samplerate=%d\n",sr);
printf("channels=%d\n",c);
num_items = f*c;
printf("num_items=%d\n",num_items);
buf = (double *)malloc(num_items*sizeof(double));
num = sf_read_double(sf,buf,num_items);
sf_close(sf);
printf("Read %d items\n",num);
for (i = 0; i < num; i += c){
for (j = 0; j < c; ++j){
if ((i+j)<length) {
output[i+j] = buf[i+j];
}
}
}
}
Ⅳ 如何在C程序中調用音頻文件
一.在程序中直接播放聲音文件
在VC++ 中的多媒體動態連接庫中提供了一組與音頻設備有關的函數。利用這些函數可以方便地播放聲音。最簡單的播放聲音方法就是直接調用VC++中提供的聲音播放函數BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound( LPCSTR lpszSound, HMODULE hmod, DWORD fuSound );其中參數lpszSound是需要播放聲音的.W***文件的路徑和文件名, hmod在這里為NULL,fuSound是播放聲音的標志,詳細說明請參考VC++中的幫助。 例如播放C:soundmusic.wav可以用sndPlaySound ("c:\sound\music.wav",SND_ASYNC);或PlaySound("c:\sound\music.wav",NULL, SND_ASYNC|SND_NODEFAULT );如果沒有找到music.wav文件,第一種格式將播放系統默認的聲音,第二種格式不會播放系統默認的聲音。
二.將聲音文件加入到程序中
在VC++的程序設計中,可以利用各種標準的資源,如點陣圖,菜單,對話框等。同時VC++也允許用戶自定義資源,因此我們可以將聲音文件作為用戶自定義資源加入程序資源文件中,經過編譯連接生成EXE文件,實現無.W***文件的聲音播放。要實現作為資源的聲音文件的播放,首先要在資源管理器中加入待播放的聲音文件。
具體步驟入下:
1.獲得包含資源的模塊句柄:
HMODULE hmod=AfxGetResourceHandle();
2.檢索資源塊信息:
HRSRC hSndResource=FindResource(hmod,MAKEINTRESOURCE(IDR_W***E1),_T("W***E"));
3. 裝載資源數據並加鎖:
HGLOBAL hGlobalMem=LoadResource(hmod,hSndResource);
LPCTSTR lpMemSound=(LPCSTR)LockResource(hGlobalMem);
4.播放聲音文件:
sndPlaySound(lpMemSound,SND_MEMORY));
5.釋放資源句柄:
FreeResource(hGlobalMem);