當前位置:首頁 » 編程語言 » 音頻庫c語言

音頻庫c語言

發布時間: 2022-12-11 17:08:04

c語言播放MP3 API函數是什麼 怎麼用

  1. 可以使用PlaySound()函數播放mp3音頻,該函數原型位於windows.h。

    PlaySound函數的聲明為:
    BOOL PlaySound(LPCSTR pszSound, HMODULE hwnd,DWORD fdwSound);
    參數pszSound是指定了要播放聲音的字元串。
    參數hwnd是應用程序的實例句柄,除非pszSound的指向一個資源標識符(即fdwSound被定義為SND_RESOURCE),否則必須設置為NULL。
    參數fdwSound是標志的組合,如下表所示。若成功則函數返回TRUE,否則返回FALSE。
    使用PlaySound函數時需要在#include<windows.h>後面加上(注意:不能加在前面):

  2. 常式:

    CFileDialogdlg(TRUE,"mp3","*.mp3",OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,"mp3文件(*.mp3)|*.mp3|");
    /*創建選擇對話框,讓用戶從文件夾中選取一個MP3文件*/
    intiRet=dlg.DoModal();//獲得對話框返回值
    if(IDOK==iRet)//如果返回值成功,表明成功獲取一個MP3文件
    {
    CStringpathName=dlg.GetPathName();//得到文件的路徑名稱
    PlaySound(pathName,NULL,SND_FILENAME|SND_ASYNC);//用playsound函數播放該文件
    }

② C語言播放音頻文件的問題....

可以使用PlaySound()函數播放wav聲音,該函數原型位於windows.h中,
函數原型為:
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);

參數pszSound是指定了要播放聲音的字元串,該參數可以是WAVE文件的名字,或是WAV資源的名字,或是內存中聲音數據的指針,或是在系統注冊表WIN.INI中定義的系統事件聲音。如果該參數為NULL則停止正在播放的聲音。

參數hmod是應用程序的實例句柄,當播放WAV資源時要用到該參數,否則它必須為NULL。

參數fdwSound是標志的組合,各種可選的標志及意義如下所示。若成功則函數返回TRUE,否則返回FALSE。

播放標志以及含義:

SND_APPLICATION
用應用程序指定的關聯來播放聲音。

SND_ALIAS
pszSound參數指定了注冊表或WIN.INI中的系統事件的別名。

SND_ALIAS_ID
pszSound參數指定了預定義的聲音標識符。

SND_ASYNC
用非同步方式播放聲音,PlaySound函數在開始播放後立即返回。

SND_FILENAME
pszSound參數指定了WAVE文件名。

SND_LOOP
重復播放聲音,必須與SND_ASYNC標志一塊使用。

SND_MEMORY
播放載入到內存中的聲音,此時pszSound是指向聲音數據的指針。

SND_NODEFAULT
不播放預設聲音,若無此標志,則PlaySound在沒找到聲音時會播放預設聲音。

SND_NOSTOP
PlaySound不打斷原來的聲音播出並立即返回FALSE。

SND_NOWAIT
如果驅動程序正忙則函數就不播放聲音並立即返回。

SND_PURGE
停止所有與調用任務有關的聲音。若參數pszSound為NULL,就停止所有的聲音,否則,停止pszSound指定的聲音。

SND_RESOURCE
pszSound參數是WAVE資源的標識符,這時要用到hmod參數。

SND_SYNC
同步播放聲音,在播放完後PlaySound函數才返回。

************************************************************

例如我想播放在C:\WINDOWS\Media目錄中的 Windows XP 啟動.wav 文件
程序如下:

#include <windows.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
PlaySound("C:\\WINDOWS\\Media\\Windows XP 啟動.wav", NULL, SND_FILENAME | SND_ASYNC);
system("pause");
return 0;
}

③ 純C語言音頻播放

可以用System() 函數 它是被包含在 stdlib.h頭文件中

④ c語言fmod怎樣用

C語言中之數學函數.
C語言提供了以下的數學函數,要使用這些函數時,在程式檔頭必須加入:.
#include
.
編譯時,必須加上參數「-lm」(表示連結至數學函式庫),例如「gcc

⑤ 在c語言程序中怎樣載入背景音樂啊,是背景音樂哦,求函數具體用法和實例。謝謝

代碼如下:

#include <windows.h>

#include <mmsystem.h>

#pragma comment(lib, "WINMM.LIB")

/*播放音樂*/

void playMusic()

{

//aiyo.wav是放在代碼文件中

PlaySound(TEXT("aiyo.wav"),0,SND_FILENAME | SND_ASYNC);

}

/**

* 主 函 數(音樂放第一排)

*/

void main()

{

playMusic();

title(); //歡迎界面上的標題

flower(); //列印字元畫

welcome(); //歡迎界面上的選項菜單

}

(5)音頻庫c語言擴展閱讀

C語言解析WAV音頻文件:

C語言基本的二進制文件操作函數有fopen,fread等等。(注意是二進制文件操作函數,所以我們不討論fgets,這是普通的文本文件操作函數)

fread是一個函數。從一個文件流中讀數據,最多讀取count個項,每個項size個位元組,如果調用成功返回實際讀取到的項個數(小於或等於count),如果不成功或讀到文件末尾返回 0。

它的函數原型為

size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

而且C語言還有一種類型叫做結構體,它在內存中是順序存儲的。剛好我們也已經得知了WAV文件在文件中的順序以及該順序中每個部分對應的含義。

那麼我們可以事先根據前面所說的WAV文件結構來定義好一個struct,然後在main主函數中初始化這個struct,並且通過fread的第一個參數帶入初始化好的這個struct,那麼執行之後就會自動讀取該文件,並且按照順序自動把這些元數據填充進了我們初始化好的struct中。

linux下的C語言對mp3等音頻進行解碼的庫是哪個庫啊

試試libmad

⑦ 怎麼用c語言打開一個MP3文件(直接給代碼),需要什麼軟體進行輸入

VC++中播放聲音的方法
2009-09-23 14:58
聲音是多媒體的一個重要組成部分,在應用程序中加入聲音可以使界面更友好。在VC++中可以根據不同的應用要求,用不同的方法實現聲音的播放。

一.播放聲音文件的簡單方法
在VC++ 中的多媒體動態連接庫中提供了一組與音頻設備有關的函數。利用這些函數可以方便地播放聲音。最簡單的播放聲音方法就是直接調用VC++中提供的聲音播放函數BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound( LPCSTR lpszSound, HMODULE hmod, DWORD fuSound );其中參數lpszSound是需要播放聲音的.WAV文件的路徑和文件名, 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文件,實現無.WAV文件的聲音播放。
要實現作為資源的聲音文件的播放,首先要在資源管理器中加入待播放的聲音文件(實現過程並不復雜,這里不在敘述)。假設生成的聲音文件資源標識符為IDR_WAVE1。在播放時只需要調用下面的語句:
PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetResourceHandle(), SND_ASYNC|SND_RESOURCE|SND_NODEFAULT|SND_LOOP);
其中MAKEINTRESOURCE()宏將整數資源標識符轉變為字元串,AfxGetResourceHandle()函數返回包含資源的模塊句柄,
SND_RESOURCE是必須的標志。
作為資源的聲音文件的第二種播放方法是把資源讀入內存後作為內存數據播放。具體步驟入下:
1.獲得包含資源的模塊句柄:
HMODULE hmod=AfxGetResourceHandle();
2.檢索資源塊信息:
HRSRC hSndResource=FindResource(hmod,MAKEINTRESOURCE(IDR_WAVE1),_T("WAVE"));
3. 裝載資源數據並加鎖:
HGLOBAL hGlobalMem=LoadResource(hmod,hSndResource);
LPCTSTR lpMemSound=(LPCSTR)LockResource(hGlobalMem);
4.播放聲音文件:
sndPlaySound(lpMemSound,SND_MEMORY));
5.釋放資源句柄:
FreeResource(hGlobalMem);

三.播放聲音文件的高級方法
在VC++中提供了一組對音頻設備及多媒體文件直接進行操作的函數。利用這些函數可以靈活地對聲音文件進行各種處理。
首先介紹幾個要用到的數據結構。WAVEFORMATEX結構定義了WAVE音頻數據文件的格式。WAVEHDR結構定義了波形音頻緩沖區。讀出的數據首先要填充此緩沖區才能送音頻設備播放。WAVEOUTCAPS結構描述了音頻設備的性能。MMCKINFO結構包含了RIFF文件中一個塊的信息。詳細的說明請參考VC++中的幫助。
下面給出程序流程簡圖及程序源代碼清單,在VC++環境下可直接使用:

源程序清單如下:
LPSTR szFileName;//聲音文件名
MMCKINFO mmckinfoParent;
MMCKINFO mmckinfoSubChunk;
DWORD dwFmtSize;
HMMIO m_hmmio;//音頻文件句柄
DWORD m_WaveLong;
HPSTR lpData;//音頻數據
HANDLE m_hData;
HANDLE m_hFormat;
WAVEFORMATEX * lpFormat;
DWORD m_dwDataOffset;
DWORD m_dwDataSize;
WAVEHDR pWaveOutHdr;
WAVEOUTCAPS pwoc;
HWAVEOUT hWaveOut;
//打開波形文件
if(!(m_hmmio=mmioOpen(szFileName,NULL,MMIO_READ|MMIO_ALLOCBUF)))
{
//File open Error
Error("Failed to open the file.");//錯誤處理函數
return false;
}
//檢查打開文件是否是聲音文件
mmckinfoParent.fccType =mmioFOURCC('W','A','V','E');
if(mmioDescend(m_hmmio,(LPMMCKINFO)&mmckinfoParent,NULL,MMIO_FINDRIFF))
{
//NOT WAVE FILE AND QUIT
}
//尋找 'fmt' 塊
mmckinfoSubChunk.ckid =mmioFOURCC('f','m','t',' ');
if(mmioDescend(m_hmmio,&mmckinfoSubChunk,&mmckinfoParent,MMIO_FINDCHUNK))
{
//Can't find 'fmt' chunk
}
//獲得 'fmt '塊的大小,申請內存
dwFmtSize=mmckinfoSubChunk.cksize ;
m_hFormat=LocalAlloc(LMEM_MOVEABLE,LOWORD(dwFmtSize));
if(!m_hFormat)
{
//failed alloc memory
}
lpFormat=(WAVEFORMATEX*)LocalLock(m_hFormat);
if(!lpFormat)
{
//failed to lock the memory
}
if((unsigned long)mmioRead(m_hmmio,(HPSTR)lpFormat,dwFmtSize)!=dwFmtSize)
{
//failed to read format chunk
}
//離開 fmt 塊
mmioAscend(m_hmmio,&mmckinfoSubChunk,0);
//尋找 'data' 塊
mmckinfoSubChunk.ckid=mmioFOURCC('d','a','t','a');
if(mmioDescend(m_hmmio,&mmckinfoSubChunk,&mmckinfoParent,MMIO_FINDCHUNK))
{
//Can't find 'data' chunk
}
//獲得 'data'塊的大小
m_dwDataSize=mmckinfoSubChunk.cksize ;
m_dwDataOffset =mmckinfoSubChunk.dwDataOffset ;
if(m_dwDataSize==0L)
{
//no data in the 'data' chunk
}
//為音頻數據分配內存
lpData=new char[m_dwDataSize];
if(!lpData)
{
//faile
}
if(mmioSeek(m_hmmio,SoundOffset,SEEK_SET)<0)
{
//Failed to read the data chunk
}
m_WaveLong=mmioRead(m_hmmio,lpData,SoundLong);
if(m_WaveLong<0)
{
//Failed to read the data chunk
}
//檢查音頻設備,返迴音頻輸出設備的性能
if(waveOutGetDeVCaps(WAVE_MAPPER,&pwoc,sizeof(WAVEOUTCAPS))!=0)
{
//Unable to allocate or lock memory
}
//檢查音頻輸出設備是否能播放指定的音頻文件
if(waveOutOpen(&hWaveOut,DevsNum,lpFormat,NULL,NULL,CALLBACK_NULL)!=0)
{
//Failed to OPEN the wave out devices
}
//准備待播放的數據
pWaveOutHdr.lpData =(HPSTR)lpData;
pWave

OutHdr.dwBufferLength =m_WaveLong;
pWaveOutHdr.dwFlags =0;
if(waveOutPrepareHeader(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0)
{
//Failed to prepare the wave data buffer
}
//播放音頻數據文件
if(waveOutWrite(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0)
{
//Failed to write the wave data buffer
}
//關閉音頻輸出設備,釋放內存
waveOutReset(hWaveOut);
waveOutClose(hWaveOut);
LocalUnlock(m_hFormat);
LocalFree(m_hFormat);
delete [] lpData;
說明:1)以上使用的音頻設備和聲音文件操作函數的聲明包含在mmsystem.h頭文件中,因此在程序中必須用#include "mmsystem.h"語句加入頭文件。同時在編譯時要加入動態連接導入庫winmm.lib,具體實現方法是從Developer Studio的Project菜單中選擇Settings,然後在Link選項卡上的Object/Library Moles控制中加入winmm.lib。2)在pWaveOutHdr.lpData中指定不同的數據,可以播放音頻數據文件中任意指定位置的聲音。3) 以上程序均在VC++6.0中調試通過,在文中省略了對錯誤及異常情況的處理,在實際應用中必須加入。
四.結論
在VC++中可以根據應用需要採用不同的方法播放聲音文件。簡單應用可以直接調用聲音播放函數。第二種方法可以把聲音作為資源加入可執行文件中。如果在播放之前要對聲音數據進行處理,可用第三種方法。

參考書目:
1. 美 Paul Perry 陳向群 等譯《多媒體開發指南》 清華大學出版社
2. 美 Peter Norton, Rob McGregor 孫鳳英 等譯《MFC開發Windows95/NT4應用程序》 清華大學出版社 1998
3. 周敬利 《多媒體音效卡技術及應用》 電子工業出版社 1998

⑧ 怎樣用標准C語言播放音樂

用C語言播放音樂,一般需要額外的庫或者調用系統的API函數。

以Windows為例,可以通過PlaySound函數播放wav格式的音樂。示例如下:

#include<stdio.h>
#include<windows.h>
#include<mmsystem.h>
#pragmacomment(lib,"WINMM.LIB")
intmain()
{
PlaySound(TEXT("1.wav"),0,SND_FILENAME);//1.wav是要播放的音樂文件
return0;
}

如果想播放mp3音樂可以使用如下代碼。

注意:生成程序後,請在cmd中執行此程序,不要在vc/vs的IDE中運行。

#include<windows.h>
#include<mmsystem.h>
#include<stdio.h>
#pragmacomment(lib,"Winmm.lib")
intmain(intargc,char*argv[])
{
//絕對地址形式
TCHARfileName[]="ganlusi.mp3";
TCHARshortName[MAX_PATH];
GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR));
TCHARcmd[MAX_PATH+10];
wsprintf(cmd,"play%s",shortName);
mciSendString(cmd,NULL,0,NULL);
Sleep(5*60*1000);//這里是防止一播放就結束做的延遲
return0;
}

⑨ C語言如何播放mp3格式音樂

windows現有的API似乎只支持播放.wav格式的音頻,mp3格式恐怕你得再去網上找找開源代碼

//播放音頻"1.wav"
#include<stdio.h>
#include<windows.h>
#pragmacomment(lib,"winmm.lib")

intmain()
{
PlaySound("1.wav",NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
getchar();
return0;
}
熱點內容
下載pythonmysqldb 發布:2025-07-14 16:05:43 瀏覽:977
生化危機5配置要求怎麼樣 發布:2025-07-14 15:38:56 瀏覽:301
蘋果電話為什麼打不開密碼 發布:2025-07-14 15:33:45 瀏覽:45
安卓如何取消短消息通知 發布:2025-07-14 15:30:54 瀏覽:373
輿情監測演算法 發布:2025-07-14 15:29:19 瀏覽:14
android搜索聯系人 發布:2025-07-14 15:27:34 瀏覽:333
省唄上傳學歷 發布:2025-07-14 15:21:54 瀏覽:634
linux伺服器tomcat 發布:2025-07-14 15:19:41 瀏覽:192
東風風神奕炫max怎麼配置 發布:2025-07-14 15:13:44 瀏覽:747
蘋果安卓不知道到底怎麼選 發布:2025-07-14 15:07:52 瀏覽:926