導航:首頁 > 編程系統 > linux純c語言編寫的音樂播放器

linux純c語言編寫的音樂播放器

發布時間:2023-09-09 13:27:06

❶ 怎麼用C語言編寫簡單的歌曲播放器

很簡單的。

計算機發聲原理:
聲音有三個特性:響度、音調、音色。

響度,這個非常好理解。就是我們感覺到的聲音的大小。具體點說就是由「振幅」決定,振幅越大響度越大。一般計量響度的單位是分貝,dB。
音調,這個就是聲音的高低,由「頻率」決定,頻率越高音調越高。頻率單位是赫茲,符號Hz。
音色,在生活當中,我們會發現各種物品發出的聲音的特點是不一樣的,如二胡和笛子。聲音的特性就是音色。而決定聲音的音色是由於物體本身的材料、結構。

對於我們的計算機而言。發聲的設置都是固定了的。要麼要計算機上的那個喇叭,那麼是外接的音響等。

現在這里對計算機上的那個喇叭用Turbo C 2.0進行編程,使之發出動聽的音樂《梁祝》。

第一步:定義《梁祝》的每一個音符的頻率和時間,將定義好的頻率和時間寫入文件或者保存在數組裡面。如果僅僅是寫一兩個程序自己玩玩的話,那直接保存在數組裡面就可以了。如果你想自己寫個播放器的話,那你先自己定義一種音樂格式文件(類似.mp3、.wav這種文件,這里暫時把這個文件定為.mymusic),將《梁祝》每個音符的頻率、時間寫入這個自定義的音樂格式文件liangzhu.mymusic。

第二步:完成了liangzhu.mymusic文件的定義後,我們要做的事情就是讀文件,控制喇叭發聲。這個具體可以參照現有的資料。這里需要事先寫幾個函數,讀文件的函數,暫停函數,頻率對照函數等等。

第三步,將上面的程序鏈接起來,就OK了。

將上面的步驟優化下,一個DIY的音樂播放器就成功了。
我上面說的只是控制了聲音的頻率和時間,其實還可以控制響度。對於一些特殊的設備,控制音色也不是不可能。

這種程序我在大一的時候寫過。現在想起來不難的。
主要是對C語言是否熟練,當然,你想要實現一個播放器,那你途中會遇到很多困難的。
祝你好運!

❷ 怎樣用標准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語言編寫,可以給出音頻文件,只需要播放即可)

用VC++編譯通過,代碼如下(其中a.wav為自己給出):
#include<windows.h>
#pragma comment(lib,"winmm.lib")
void main()
{
PlaySound("C:\\a.wav",0,SND_FILENAME|SND_SYNC);
}

linux 下有哪些好的命令行音樂播放器

適用於Linux的音樂播放器可說數不勝數,不同的用戶也有各自的喜好。知名且應用廣泛的有 Cantata和Exaile,不太知名的工具有Clementine、Nightingale和Quod Libet,國產較好用的有網易雲音樂,本文系統極客再為大家推薦5款好用的Linux音樂播放器,各位看客自行選擇吧。

1.Qmmp
Qmmp 其實就是Linux版的Winamp,它的界面雖然很輕量級,但卻有豐富的功能集。想必很多Winamp老用戶都有懷舊感情,而Qmmp與Winamp的快捷鍵也完全兼容,一定能給老用戶帶來不小的驚喜。
Qmmp音樂播放器兼容大多數流行音頻格式,如:MPEG1 layer 2/3、Ogg Vorbis和Opus、原生FLAC/Ogg FLAC、Musepack、WavePack、軌道模式(mod、s3m、it、xm等)、ADTS AAC、CD音頻、WMA、Monkey』s Audio (以及由FFmpeg庫提供的其他格式)、PCM WAVE (以及由libsndfile庫提供的其他格式)、Midi、SID和 Chiptune格式(AY、GBS、GYM、HES、KSS、NSF、NSFE、SAP、SPC、VGM、VGZ和VTX)。

2. Amarok
Amarok 是一款KDE音樂播放器,它也是Linux系統中最古老的音樂播放器之一。之所以它成為受歡迎的Linux播放器之一,除其歷史悠久外還因其兼容大多數Linux桌面環境。
Amarok音樂播放器除支持大量音樂格式外,其主要特點還在於豐富的插件支持,其還因與知名的網路服務(如Ampache、Jamendo Service、Last.fm、Librivox、MP3tunes、Magnatune和OPML播客)集成而聞名。

3. Rhythmbox
Rhythmbox是一款Gnome音樂播放器,由於它是Gnome自帶,所以普及程度也非常高。而Rhythmbox除是一款音樂播放器外,還是一款非常不錯的音樂管理應用。除支持MP3和OGG外,它還支持其它十幾種音頻格式,並集成網路收單機、iPod、音頻CD記錄和播放、音樂共享和播客等功能。

4. VLC
雖然VLC以視頻播放而聞名,但它也是一款強大的音樂播放器,其主要以強大的編解碼器集合而出名,如果一個文件不能被其它播放器打開,通常VLC都可以搞定。此外,VLC還可以高度定製並有許多擴展插件,而支持Windows、Linux、macOS、Unix、iOS和Android系統也成為其強大底蘊。

5. Cmus
如果你喜歡命令行應用,那麼Cmus是一款不錯的Linux命令行音樂播放器選擇。它除支持Ogg Vorbis、MP3、FLAC、Opus、Musepack、WavPack、WAV、AAC、MP4、音頻CD、ffmpeg(WMA,APE,MKA,TTA,SHN等)和libmodplug外,還可用於Shoutcast或Icecast流式傳輸。Cmus的主要做點就是非常輕量級,其內存需求也極小。

❺ 用C語言編寫音樂播放器的代碼

vc6.0下編譯可以的

#include <windows.h>
#include <mmsystem.h>

#pragma comment (lib, "winmm.lib")

#define ID_PLAY 1000
#define ID_STOP 1001
#define ID_EXIT 1002

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
TCHAR clsName[] = TEXT ("clsMusicPlayer");
TCHAR title[] = TEXT ("Music Player");
WNDCLASS wc;
HWND hWnd;
MSG msg;
int cxScreen;
int cyScreen;
int winX;
int winY;
int winWidth;
int winHeight;

wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
wc.hCursor = LoadCursor (hInstance, IDC_ARROW);
wc.hIcon = LoadIcon (hInstance, IDI_APPLICATION);
wc.hInstance = hInstance;
wc.lpfnWndProc = WndProc;
wc.lpszClassName = clsName;
wc.lpszMenuName = NULL;
wc.style = CS_HREDRAW | CS_VREDRAW;

if ( !RegisterClass (&wc) )
{
MessageBox (NULL, TEXT ("RegisterClass Error"), TEXT ("ERROR"), MB_OK | MB_ICONINFORMATION);
return -1;
}

cxScreen = GetSystemMetrics (SM_CXSCREEN);
cyScreen = GetSystemMetrics (SM_CYSCREEN);

winWidth = cxScreen / 4;
winHeight = cyScreen / 3;
winX = (cxScreen - winWidth) / 2;
winY = (cyScreen - winHeight) / 2;

hWnd = CreateWindow (
clsName, title,
WS_OVERLAPPEDWINDOW & ~WS_THICKFRAME & ~WS_MAXIMIZEBOX,
winX, winY, winWidth, 100,
NULL, NULL, hInstance, NULL);

if ( !hWnd )
{
MessageBox (NULL, TEXT ("CreateWindow Error"), TEXT ("ERROR"), MB_OK | MB_ICONINFORMATION);
return -2;
}

ShowWindow (hWnd, SW_SHOW);
UpdateWindow (hWnd);

while ( GetMessage (&msg, NULL, 0, 0) > 0 )
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}

return msg.wParam;
}

int PlayMusic ()
{
HANDLE hFind;
WIN32_FIND_DATA findFileData;

static TCHAR szPath[1024] = TEXT (".\\*.wav");

hFind = FindFirstFile (szPath, &findFileData);
if ( hFind != INVALID_HANDLE_VALUE )
{
//MessageBox (NULL, findFileData.cFileName, "", 0);
PlaySound (findFileData.cFileName, NULL, SND_FILENAME | SND_ASYNC);
while ( FindNextFile (hFind, &findFileData) )
{
//MessageBox (NULL, findFileData.cFileName, "", 0);
PlaySound (findFileData.cFileName, NULL, SND_FILENAME | SND_ASYNC);
}
}
else
{
MessageBox (NULL, "沒找到文件", "", 0);
}
return 1;
}

LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDc;
PAINTSTRUCT ps;
HINSTANCE hInst;
RECT rect;

switch ( message )
{
case WM_CREATE:
{
GetClientRect (hWnd, &rect);
hInst = ((LPCREATESTRUCT)lParam)->hInstance;
CreateWindow (
"button",
TEXT ("播放"),
BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
rect.right / 10, rect.bottom / 10, 40, 25, hWnd, (HMENU)ID_PLAY, hInst, NULL);
CreateWindow (
"button",
TEXT ("停止"),
BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
rect.right / 10 + 50, rect.bottom / 10, 40, 25, hWnd, (HMENU)ID_STOP, hInst, NULL);
CreateWindow (
"button",
TEXT ("退出"),
BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
rect.right / 10 + 100, rect.bottom / 10, 40, 25, hWnd, (HMENU)ID_EXIT, hInst, NULL);
}
break;
case WM_COMMAND:
{
switch ( HIWORD (wParam) )
{
case BN_CLICKED:
{
switch ( LOWORD (wParam) )
{
case ID_PLAY:
{
PlayMusic ();
//PlaySound (TEXT ("D:\\音頻文件\\1.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
}
break;
case ID_STOP:
{
PlaySound (NULL, NULL, SND_FILENAME);
}
break;
case ID_EXIT:
{
SendMessage (hWnd, WM_CLOSE, 0, 0);
}
break;
}
}
break;
}
}
break;
case WM_PAINT:
{
hDc = BeginPaint (hWnd, &ps);

EndPaint (hWnd, &ps);
}
break;
case WM_CLOSE:
{
PostQuitMessage (0);
}
break;
case WM_DESTROY:
{
DestroyWindow (hWnd);
}
break;
default:
return DefWindowProc (hWnd, message, wParam, lParam);
}

return 0;
}

閱讀全文

與linux純c語言編寫的音樂播放器相關的資料

熱點內容
apple和瑤瑤綜藝 瀏覽:351
打開word所在文件夾自動彈出 瀏覽:390
c怎麼編程改名字 瀏覽:146
哪些電視劇app不帶logo的 瀏覽:406
開機後桌面變黑色桌面文件丟失 瀏覽:136
網路電視怎麼用遙控器 瀏覽:953
我的世界json打開失敗 瀏覽:867
易語言56教程視頻 瀏覽:610
linux開機啟動文件 瀏覽:773
給寶寶唱兒歌用什麼app 瀏覽:354
投標文件為什麼要使用cad軟體 瀏覽:522
一季度保險業務數據如何看 瀏覽:398
為什麼行車記錄儀文件大小為0 瀏覽:795
win10筆記本傳輸文件 瀏覽:735
棉花糖小說下載的小說在哪個文件 瀏覽:750
淘寶網頁特效代碼 瀏覽:921
找不到指定的文件是什麼意思 瀏覽:659
cad打不出stl文件 瀏覽:439
紅米4進入最近應用程序 瀏覽:943
word2013官方下載免費版win7 瀏覽:80

友情鏈接