當前位置:首頁 » 編程語言 » c語言mp3

c語言mp3

發布時間: 2022-12-18 14:34:50

『壹』 c語言怎麼輸出mp3的二進制編碼

使用fopen以二進制只讀方式打開mp3文件,用fseek求得文件大小,申請一片相應大小的內存空間用作緩沖區,然後將文件整個讀入到緩沖區中。

//二進制方式打開文件
FILE*fp=fopen("example.mp3","rb");
if(NULL==fp)
{
printf("Unabletoopenmp3file. ");
exit(1);
}

//求得文件的大小
fseek(fp,0,SEEK_END);
intsize=ftell(fp);
rewind(fp);

//申請一塊能裝下整個文件的空間
char*buffer=(char*)malloc(sizeof(char)*size);

//讀文件
fread(buffer,size,1,fp);

『貳』 怎麼用C語言打開一個MP3文件吖

用VS2003或2005建一個帶MFC的名為Mp3Player的控制台應用程序,把這些代碼復制到Mp3Player.cpp

// Mp3Player.cpp : 定義控制台應用程序的入口點。
//

#include "stdafx.h"
#include "Mp3Player.h"
#include "mmsystem.h"

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

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// 唯一的應用程序對象

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

// 初始化 MFC 並在失敗時顯示錯誤
if (!AfxWinInit(::GetMoleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: 更改錯誤代碼以符合您的需要
_tprintf(_T("錯誤: MFC 初始化失敗\n"));
nRetCode = 1;
}
else
{
//"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files (*.*)|*.*||";
CFileDialog OpenFileDlg(TRUE ,
NULL ,
NULL ,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT ,
_T("MP3 文件(*.mp3)|*.mp3||"));
if (OpenFileDlg.DoModal() == IDOK)
{
CString strFilePath = OpenFileDlg.GetPathName();
MCI_OPEN_PARMS mop;
mop.dwCallback = NULL;
mop.lpstrAlias = NULL;
mop.lpstrDeviceType = _T("MP3");
mop.lpstrElementName = strFilePath;
mop.wDeviceID = 0;

MCIERROR err = mciSendCommand(NULL ,
MCI_OPEN ,
MCI_OPEN_ELEMENT ,
(DWORD)&mop);

MCI_PLAY_PARMS mpp;
mpp.dwCallback = NULL;
mpp.dwFrom = 0;
mpp.dwTo = 0;
err = mciSendCommand(mop.wDeviceID , MCI_PLAY , MCI_FROM | MCI_NOTIFY, (DWORD_PTR)&mpp);
}

}

getchar();

return nRetCode;
}

『叄』 求助大神 C語言怎麼播放 MP3文件

#include<iostream>

#include<algorithm>

#include<vector>

#include<malloc.h>

#include<stdio.h>

usingnamespacestd;

vector<int>num;

int*pUnion=(int*)malloc(sizeof(int)*200000);

inti;

intcount_number;

intmain()

{

scanf("%d",&i);

for(intj=0;j<i;j++)

{

intnumber;

scanf("%d",&number);

num.push_back(number);

*(pUnion+j)=number;

}

sort(pUnion,pUnion+i-1);

sort(num.begin(),num.end());

int*pEnd=unique(pUnion,pUnion+i-1);

intjian_ge=pEnd-pUnion;

while(pUnion!=pEnd)

{

count_number=count(num.begin(),num.end(),*pUnion);

printf("%d%d ",*pUnion,count_number);

pUnion++;

}

return0;

}

『肆』 怎樣用C語言編程打開一個文件(比如mp3,mp4)

可以使用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>後面加上(注意:不能加在前面):
常式:

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

『伍』 c語言中如何播放mp3數據幀

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

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

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

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

播放標志以及含義:

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

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

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

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

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

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 啟動.MP3文件
程序如下:

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

『陸』 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;
}

『柒』 c語言程序設計MP3或MP4文件基本信息的解析

找了個MP3看了下,comment是29個位元組。
可參考 http://www.chineselinuxuniversity.net/articles/27374.shtml

拿VC的C語言寫了下:
頭文件:
#include <stdio.h>

// TODO: reference additional headers your program requires here

#define MP3_ID3_LENGTH 10
typedef struct tag_ID3_INFO
{

} ID3_INFO;

#define IDENTIFY_LEN 3
#define TITLE_LEN 30
#define ARTIST_LEN 30
#define ALBUM_LEN 30
#define YEAR_LEN 4
#define COMMENT_LEN 30
#define GENRE_LEN 1

// IDENTIFY_LEN + TITLE_LEN +...
#define MP3_INFO_LENGTH 128

typedef struct tag_MP3_INFO
{
char Identify[IDENTIFY_LEN + 1]; //TAG三個字母
//這里可以用來鑒別是不是文件信息內容
char Title[TITLE_LEN + 1]; //歌曲名,30個位元組
char Artist[ARTIST_LEN + 1]; //歌手名,30個位元組
char Album[ARTIST_LEN + 1]; //所屬唱片,30個位元組
char Year[YEAR_LEN + 1]; //年,4個位元組
char Comment[COMMENT_LEN + 1]; //注釋,28個位元組
char Genre[GENRE_LEN + 1]; //類型 ,1個位元組
} MP3_INFO;

C文件:
#include <string.h>

#define MP3_OK 1
#define MP3_ERROR 1

FILE *OpenMp3File(char *pFileName);
int ReadMP3Info(FILE *pFile, MP3_INFO *pstInfo);
int OutputMP3Info(MP3_INFO *pstMp3Info);

int main(int argc, char* argv[])
{
FILE *pFile = NULL;
MP3_INFO stMp3Info = {0};
char *pfname = "E:\\Project\\MP3\\test.MP3";

pFile = OpenMp3File(pfname);
if (NULL == pFile)
{
return MP3_ERROR;
}

ReadMP3Info(pFile, &stMp3Info);

printf("\r\nMP3 file: %s", pfname);
OutputMP3Info(&stMp3Info);

printf("Hello World!\n");
return MP3_OK;
}

FILE *OpenMp3File(char *pFileName)
{
FILE *pFile = NULL;
pFile = fopen(pFileName,"rb");
if (NULL==pFile)
{
printf("open read file error!!");
return NULL;
}

return pFile;
}

int ReadMP3Info(FILE *pFile, MP3_INFO *pstInfo)
{
int len = 0;
if ((NULL == pFile) || (NULL == pstInfo))
{
return MP3_ERROR;
}

fseek(pFile, 0, SEEK_END);
len = ftell(pFile);
if (len <= (MP3_INFO_LENGTH + MP3_ID3_LENGTH))
{
return MP3_ERROR;
}

memset(pstInfo, 0, sizeof(MP3_INFO));

fseek(pFile, -MP3_INFO_LENGTH, SEEK_END);
len = fread((char *)(pstInfo->Identify), 1, IDENTIFY_LEN, pFile);
len += fread((char *)(pstInfo->Title), 1, TITLE_LEN, pFile);
len += fread((char *)(pstInfo->Artist), 1, ARTIST_LEN, pFile);
len += fread((char *)(pstInfo->Album), 1, ALBUM_LEN, pFile);
len += fread((char *)(pstInfo->Year), 1, YEAR_LEN, pFile);
len += fread((char *)(pstInfo->Comment), 1, COMMENT_LEN, pFile);
len += fread((char *)(pstInfo->Genre), 1, GENRE_LEN, pFile);
if (MP3_INFO_LENGTH != len)
{
return MP3_ERROR;
}

return MP3_OK;
}

int OutputMP3Info(MP3_INFO *pstMp3Info)
{
printf("\r\nTag : %s", pstMp3Info->Identify);
printf("\r\nTitle : %s", pstMp3Info->Title);
printf("\r\nArtist : %s", pstMp3Info->Artist);
printf("\r\nAlbum : %s", pstMp3Info->Album);
printf("\r\nYear : %s", pstMp3Info->Year);
printf("\r\nComment: %s", pstMp3Info->Comment);

return MP3_OK;
}

測試:
MP3 file: E:\Project\MP3\test.MP3
Tag : TAG
Title : TrackTitle
Artist : ArtistName
Album : AlbumTitle
Year : 2012
Comment: This is a comment

『捌』 C語言中PlaySound函數如何播放MP3文件

可以使用PlaySound()函數播放聲音文件,

該函數原型位於#include <mmsystem.h>中,

因此要使用PlaySound,首先需要添加對這個頭文件的引用。

提示:mm就是MultiMedia的簡寫,多媒體

【1、函數使用說明】

函數原型為: BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);

返回值表示是否播放成功。

參數pszSound是要播放聲音的文件名,

只支持WAV等格式的文件(應該不能播放MP3格式文件);

你可以去mp3..com用「wav」為關鍵詞可以搜到很多wav音樂,

也可以用工具將其他格式的轉換為wav格式的。

參數hmod是應用程序的實例句柄,一般傳遞NULL就可以;

參數fdwSound是標志的組合掩碼,

可選值有SND_FILENAME、SND_ASYNC、SND_SYNC等。

SND_FILENAME表示pszSound參數指定的是文件名(pszSound還可以指定資源、內存音樂、系統音樂等等);

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

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

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

【2、使用舉例】
PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 啟
動.wav"),NULL,SND_FILENAME|SND_SYNC);

注意的問題:文件名中的反斜線要用「\\」,

因為C語言中「\」默認是轉義符,

如果要表示「\」則需要使用「\\」,

對這點不明白的請回去翻一下C語言的書;

對中文字元串要使用TEXT宏。

『玖』 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函數播放該文件
    }
熱點內容
新年解壓糖 發布:2024-05-20 09:50:55 瀏覽:54
以太坊價值在哪裡存儲 發布:2024-05-20 09:46:34 瀏覽:641
cgipython配置 發布:2024-05-20 09:29:06 瀏覽:865
在我的世界伺服器中隱身 發布:2024-05-20 09:07:46 瀏覽:972
加西貝拉壓縮機好嗎 發布:2024-05-20 08:58:56 瀏覽:757
eve腳本航 發布:2024-05-20 08:56:59 瀏覽:591
取票人的密碼是什麼 發布:2024-05-20 08:21:43 瀏覽:963
天貓帳號密碼應輸入什麼 發布:2024-05-20 08:16:26 瀏覽:272
plsql異常處理 發布:2024-05-20 07:54:47 瀏覽:542
dreamweaver上傳網頁 發布:2024-05-20 07:51:24 瀏覽:462