c語言程序mp3,C語言程序設計基礎

本文目錄一覽:

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

找了個MP3看了下,comment是29個位元組。

可參考

拿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語言如何播放mp3格式音樂

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

//    播放音頻 “1.wav”

#include stdio.h

#include windows.h

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

int main()

{

    PlaySound (“1.wav”,NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);    

    getchar();

    return 0;

}

怎麼用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(::GetModuleHandle(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數據幀

可以使用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,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函數時需要在#includewindows.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語言程序讀ID3v1信息從mp3文件並打印出來。 1)使用命令行輸入一個MP3檔案名稱。 2)判斷檔案名稱的分

#include stdio.h

#include stdlib.h

#include string.h

int main(int argc,char **argv)

{

if (argc != 2)

{

printf(“Need a file!\n”);

return 0;

}

else

{

FILE *in;

in=fopen(argv[1],”r”);

if ( ! in )

return 0;

fseek(in,-128,SEEK_END);

char *str;

char s[3];

fread(s,1,3,in);

if ( memcmp(s,”TAG”,3) )

{

printf(“Do not contain ID3V1 TAG\n”);

return 0;

}

else

{

printf(“ID3v1 info\n”);

str=malloc(30*sizeof(char));

int i;

fread(str,1,30,in);

printf(” TITLE: %s\n”,str);

fread(str,1,30,in);

printf(” ARTIST: %s\n”,str);

fread(str,1,30,in);

printf(” ALBUM: %s\n”,str);

fread(str,1,4,in);

if ( str[0] != 0 )

printf(” YEAR: %c%c%c%c\n”,str[0],str[1],str[2],str[3]);

else

printf(” YEAR:\n”);

fread(str,1,30,in);

printf(“COMMENT: %s\n”,str);

if ( (str[28]==0) (str[29]0) )

printf(” TRACK: %d\n”,str[29]);

else

printf(” TRACK:\n”);

fread(str,1,1,in);

if ( (unsigned char)str[0] != 0xFF )

printf(” GENRE: %u\n”,(unsigned char)str[0]);

else

printf(” GENRE:\n”);

free(str);

}

close(in);

}

}

原創文章,作者:SLPHT,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/329793.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
SLPHT的頭像SLPHT
上一篇 2025-01-14 18:55
下一篇 2025-01-14 18:55

相關推薦

  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • 數據結構與算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序算法、字符串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29

發表回復

登錄後才能評論