当前位置:首页 > 代码 > 正文

mp3代码分析(mp3结构解析)

admin 发布:2022-12-19 07:10 106


本篇文章给大家谈谈mp3代码分析,以及mp3结构解析对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

要一个解析MP3的代码要C语言的 要自己写的不要网上的

#include stdio.h

#include string.h#define FILE_PATH "C:\\甩葱歌.mp3"

void main()

{

int i; //用于循环计数

struct MUSIC_TITAL_INFO

{

char ID3v1TAG[3]; //TAG

char MUSIC_NAME[30]; //存储标题信息

char Artist[30]; //存储歌手信息

char Album[30]; //存储专辑信息

char YEAR[4]; //存储年代信息

char Comments[28]; //存储备注信息,28个字节(有时为30字节)

char Genre; //存储音乐风格信息,保留位,1个字节

char Reserved; //保留位,1个字节(有时没有意思

char Track; //音轨(曲号)保留位,1个字节(有时没有)

}st1;

FILE *fp;

fp = fopen(FILE_PATH,"r");

if (fp == NULL) {

printf("can not open file!");

return;

}

fseek(fp,-128L,SEEK_END);

fread(st1,1,128,fp); //结构体中的变量全是char

// printf("%s-%s-%s-%s-%s-%s-%c-%c-%c.\n",\

// st1.ID3v1TAG,st1.MUSIC_NAME,st1.Artist,st1.Album,st1.YEAR,st1.Comments,\

// st1.Genre,st1.Reserved,st1.Track);

//打印TAG

printf("TAG:");

for(i= 0; i3; i++)

{

printf("%c",st1.ID3v1TAG[i]);

}

printf("\n");

//打印标题

printf("标题:");

for(i= 0; i30; i++)

{

printf("%c",st1.MUSIC_NAME[i]);

}

printf("\n");

//打印歌手信息

printf("歌手信息:");

for(i= 0; i30; i++)

{

printf("%c",st1.Artist[i]);

}

printf("\n");

//打印专辑信息

printf("专辑信息:");

for(i= 0; i30; i++)

{

printf("%c",st1.Album[i]);

}

printf("\n"); //打印年代信息

printf("年代信息:");

for(i= 0; i4; i++)

{

printf("%c",st1.YEAR[i]);

}

printf("\n"); //备注

printf("备注:");

for(i= 0; i28; i++)

{

printf("%c",st1.Comments[i]);

}

printf("\n"); //音乐风格信息

printf("音乐风格信息:");

printf("%c",st1.Genre);

printf("\n"); //保留位

printf("保留位:");

printf("%c",st1.Reserved);

printf("\n");

//音轨

printf("音轨:");

printf("%c",st1.Track);

printf("\n");

fclose(fp);

}

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

如何在Android代码中确定一个MP3的编码方式

用过sketch的同学应该都有过这样的体验,在刚接触sketch的时候基本上都为导出(Export)这个功能发过愁吧。我当时就为此纠结过好久,直到后来翻阅了各种资料问过了各位大神当时才导出几张交互稿来。(也可能是因为笔者太笨了囧

sketch里面的导出模块的设置位于整体界面的左上角,当然也可以从最顶的菜单栏通过FileExport进入,这个比较基础想必大家也都了解,我就不再赘述了。

如何用php提取mp3文件里的信息

在提取信息的之前,要先把指定目录下的mp3文件找出来,下面是提取mp3文件的代码片段:

$thisdir=dir(".");

while($file=$thisdir-read()) {

if((!is_dir("./$file")) and ($file!=".") and ($file!=".."))

{

$mp3=strstr($file,".");

if($mp3==".mp3"){

echo "

$file

";

echo " ";

}

}

这段代码可以把指定目录下的mp3文件显示出来(改例的保存文件的目录)。

下一步就是在提取出来的mp3文件中的信息再提取出来,下面是程序片段:

$fp=fopen($file,"r");

$content=fread($fp,filesize($file));

$content=strstr($content,"TAG");

echo "$content";

由于信息是以TAG字符串开头的,所以就用strstr函数找第一个出现的tag标记,然后把后面的字符串显示出来,这就是mp3文件中的信息了,当然,这些信息很乱,你可以用字符串函数把提取出来的信息在分析处理一下,得到有用的信息。

html代码问题。谁知道MP3等音乐代码啊

1. 如何贴rm,ra,ram类型的音乐,代码如下:

embed width="0" height="0" type="audio/x-pn-realaudio-plugin" autostart="true" controls="ControlPanel" src="";

2. 如何贴midi,asf,wma,asx类型的音乐,代码如下:

embed autostart="true" loop="-1" controls="ControlPanel" width="0" height="0" src="";

只需要把整段代码copy复制到文章中(编辑文章的时请先点击HTML代码模式再粘贴代码,否则这段代码会以文本形式显示出来,不能被执行),用你喜欢及可用的音乐文件的URL(网址)代替上面红色显示的音乐地址代码就可以了。

造成音乐不能成功播放的大多数原因:

A:音乐文件错误,有可能这个文件本身就不是音乐的文件,只是一个普通的HTML页面。

B:音乐文件地址错误,这个音乐文件根本不存在。

C:没有安装相关的播放软件。

测试的办法:请把音乐文件地址在IE栏输入,如果提示你保存,保存的文件类型是rm、ram、midi等的文件即是音乐文件。如果打开这个文件是自动播放音乐或显示其他内容的,则不是。

添加带音乐的flash,然后在弹出窗口输入你的FLASH地址,注意后戳名为:,大小可以调整为,1*1,这样可以在不显示FALSH的情况下播放音乐,但是记住要为自动播放的,不要找那种需要按开始的FLASH

加入一段在线音乐播放代码,推荐使用:IFRAME marginHeight=0 src=""; frameBorder=0 noResize width=540 scrolling=no height=25 将此代码放入网站合适地方,将24小时不间断放歌,次代码由清风网络电台提供

以下代码由[秋天的风]提供:首先打开我的文章,进入编辑状态,选择HTML格式然后就可以输入了,下面我们来看代码,首先来看第一种,比较简单的:

bgsound src=”url” loop=-1

“url”依然是路径名,loop表示循环数,-1表示始终循环

来看第二种:

EMBED src="music.mid" autostart="bool" loop="n" width="m" height="k"

其中各个属性的含义如下:

SRC:音乐文件路径

(以下可选) AUTOSTART:音乐文件上传完后自动播放,TRUE为播放,FALSE为否

LOOP:设置循环TRUE为自动循环,FALSE为不循环,数值为次数

WIDTH,HEIGHT为播放控制面板的宽和高,

其余的属性有:

volume:取值范围为"0-100",设置音量,默认为系统本身的音量

starttime:"分:秒",设置歌曲开始播放的时间,如,starttime="00:10",从第10秒开始播放

endtime: "分:秒",设置歌曲结束播放的时间

controls :控制面板的外观controls="console/smallconsole/playbutton/ pausebutton/stopbutton/volumelever" ·console 正常大小的面板

·smallconsole 较小的面板

·playbutton 显示播放按钮

·pausebutton 显示暂停按钮

·stopbutton 显示停止按钮

·volumelever 显示音量调节按钮

hidden: 为true时可以隐藏面板

——以下代码由[风之舞]提供:

背景音乐代码精简

1、embed src="背景音乐网址" hidden="true" autostart="true" loop="true"

--------hidden="true"表示隐藏播放,即不显示播放器的外观,若要想显示,把"true" 替换为"false"即可,这样为默认是最小化播放,若还想具体显示播放器的大小,另加上height="高度值" width="宽度值" 就可以了。

-------autostart="true"表示当前页一载入则自动播放,若不希望播放改为autostart="false"

即可...

------ loop="true"表示无限次循环播放音乐直到当前页关闭为止,不想循环播放替换为 loop="false"就OK了

2、embed src="背景音乐网址" autostart="true" loop="-1" controls="ControlPanel" width="0" height="0"

-----------loop="-1" 表示无限次循环播放,可设置播放次数,用具体数字代替即可,比如我希望它播放两次,则loop="2"

---------controls="ControlPanel"这个控制选项可省略

--------width="0" height="0"表示隐藏播放,和前面的一样。

若欲设置播放器的外观,则替换为具体的数值就可以了,比如width="123" height="100"

其实要说最简化的播放背景音乐的代码,则下面的代码是最简单的了---

embed src="背景音乐网址"

另外:bgsound src="背景音乐路径" loop="-1"

这个只支持IE浏览器,而且是完全下载完后才开始播放,不像前面所说的格式那样可以一边缓冲一边播放。这个一般用于mid音乐或较小的mp3,wav格式的音乐. 若是较大的文件还是用前面所说的格式吧~~

bgsound src="背景音乐路径" loop="-1"这个随浏览器的打开而播放,当最小化窗口时即停止播放,当最大化窗口时又开始播放。

embed src="背景音乐网址" autostart="true" loop="-1" controls="ControlPanel" width="0" height="0" 常用于mid,,wav,mp3类型的音乐类型.

这个则不管是否最小化窗口都始终播放,直至关闭当前窗口为止~~

支持的音乐文件类型:只支持MP播放器所支持的音乐格式,比如mp3,asf,wma,asx等等..不支持rm,ram....

视频文件的插入方法也和上面所说的一样,设置好合适的

音乐代码解释

embed autostart="true" loop="-1" controls="ControlPanel" width="0" height="0" src=""

解释一下:

AUTOSTART="TRUE / FALSE"

是否要在音乐档传完之后,就自动播放音乐。 TRUE 是要

FALSE 是不要,内定值是不要。

LOOP="TRUE / FALSE / 整数"

设定是否要自动反覆播放,LOOP=2 表示重复两次,若要无限次重复可用 LOOP="TRUE"

WIDTH 和 HIGH="整数"

设定控制面版的宽度和高度

CONTROLS="CONSOLE / SMALLCONSOLE /

PLAYBUTTON / PAUSEBUTTON / STOPBUTTON /

VOLUMELEVER"

设定控制面板的样子,预设值是 CONSOLE

CONSOLE 一般正常的面板

SMALLCONSOLE 较小的面板

PLAYBUTTON 只显示播放按钮

PAUSEBUTTON 只显示暂停按钮

STOPBUTTON 只显示停止按钮

VOLUMELEVER 只显示音量调整钮

这个是古槐搜集的

网页MP3播放代码

WMP加入了ActiveX解码器控件,不仅可以放曲子,还能放Flash和其它视频文件

.*.*/video/story/chinese/hynh/b.wmv"

...

n/nsmp2inf.cab#Version=5,1,52,701"

想用WMP连续播放请参照ASX元文件使用讲解:使用ASX播放列表吧

上面的这个播放器是老式的那种,6.4版本!新式播放器是在MediaPlayer9.0以后出现的,也就是说只有装了9.0或9.0以上的播放器才能正常使用的。

下面是新式播放器代码,相对以前的来说要简单很多:

是否自动播放

调整左右声道平衡,同上面旧播放器代码

播放器是否可人为控制

是否启用上下文菜单

播放的文件地址

播放次数控制,为整数

播放速率控制,1为正常,允许小数,1.0-2.0

控件设置:当前位置

控件设置:当前标记

显示默认框架

脚本命令设置:是否调用URL

脚本命令设置:被调用的URL

是否按比例伸展

默认声音大小0%-100%,50则为50%

是否静音

播放器显示模式:Full显示全部;mini最简化;None不显示播放控制,只显示视频窗口;invisible全部不显示

如果是0可以允许全屏,否则只能在窗口中查看

开始播放是否自动全屏

是否启用错误提示报告

SAMI样式

SAMI语言

字幕ID

mp3代码分析的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mp3结构解析、mp3代码分析的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/4328.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载