[MP3学习]MP3标签信息之ID3v1,IDv2
近来本着踏实努力一点一滴的原则,研究了下MP3,准备做一个了类于AIRPLAY的播放器,这是学习的第一篇,读取信息,做一个笔记。 参考资料:http://www.id3.org/ID3v1 http://en.wikipedia.org/wiki/ID3 ====================================================
近来本着踏实努力一点一滴的原则,研究了下MP3,准备做一个了类似于AIRPLAY的播放器,这是学习的第一篇,读取信息,做一个笔记。
参考资料:http://www.id3.org/ID3v1 http://en.wikipedia.org/wiki/ID3
========================================================================
MP3歌曲信息(ID3v1)结构如下:
所以需要一个结构体存储MP3的歌曲信息,一般声明如下:
struct MP3INFO //MP3的信息结构,固定的,存放在歌曲最后128个字节中 { char identify[3]; // TAG char Title[30]; // 歌曲名,30个字节 char Artist[30]; // 歌手名,30个字节 char Album[30]; // 所属唱片,30个字节 char Year[4]; // 年份,4个字符 char Comment[30]; // 注释,28个字节,有些说是30个,但都没啥关系,只是保留位的大小要改改 char reserved[1]; //保留,暂无用 };
知道了这些就很容易了,不敢用什么办法,只要读取到最后的128个字节,所有的相关信息就可以得到了,用VC6.0控制台程序测试如下(主代码):
#include "stdafx.h" struct MP3INFO //MP3的信息结构,固定的,存放在歌曲最后128个字节中 { char identify[3]; // TAG char Title[30]; // 歌曲名,30个字节 char Artist[30]; // 歌手名,30个字节 char Album[30]; // 所属唱片,30个字节 char Year[4]; // 年份,4个字符 char Comment[30]; // 注释,28个字节,有些说是30个,但都没啥关系,只是保留位的大小要改改 char reserved[1]; //保留,暂无用 }; int main(int argc, char* argv[]) { printf("读取一个MP3的信息,每个MP3的最后128个字节存储的,它有固定的结构,下面试读取之!\n"); MP3INFO mp3; FILE *pf = fopen("H:/1.mp3","r"); printf("打开文件:%d\n",pf); fseek(pf,-128,SEEK_END); fread(&mp3,sizeof(mp3),1,pf); printf("TAG标志:%s\n",mp3.identify); printf("曲名:%s\n",mp3.Title); printf("歌手:%s\n",mp3.Artist); printf("唱片:%s\n",mp3.Album); printf("年份:%s\n",mp3.Year); printf("注释:%s\n",mp3.Comment); fclose(pf); return 0; }
效果如下:
读取的任务完成了。对于修改,知道了这些再做完善也很容易:(如下)
memset(&mp3,0,sizeof(mp3)); printf("修改信息:\n"); mp3.Identify[0]='T'; mp3.Identify[1]='A'; mp3.Identify[2]='G'; mp3.Flag='0'; mp3.Track='5'; mp3.Style='3'; lstrcpy(mp3.Title,(LPCTSTR)"修改的名字"); lstrcpy(mp3.Artist,(LPCTSTR)"修改的作者"); lstrcpy(mp3.Album,(LPCTSTR)"修改的唱片"); lstrcpy(mp3.Year,(LPCTSTR)"1989"); lstrcpy(mp3.Comment,(LPCTSTR)"修改的注释"); fseek(pf,-128,SEEK_END); fwrite(&mp3,sizeof(mp3),1,pf);
修改完成后,在UltraEdit中查看(16进制),信息格式完全正确。但是,用Windows自带的属性查看发现,其上面的内容不全是我们修改的,这是为什么呢?
经多方查找 http://en.wikipedia.org/wiki/ID3,http://baike.baidu.com/view/66078.html
/* * ID3v1是固定的128个字节,这个你不用担心。其实ID3v1是这样安排的:如果MP3的注释是大于28个字节的,那么就要借用126-127两个字节。 * 所以ID3v1的注释部分可能是28个字节也可能是30个字节。那么,怎么区分到底是28个字节还是30个字节呢?很简单,126处就是管这个的, * 我们只要看看126处是不是0x00,如果是0x00那么注释就有28个字节。如果不等于0x00,那么就是说注释是30个字节。同时别忘了, * 由于第127字节存储了Track信息,那么如果注释是30个字节的时候,这首歌的ID3v1里的那个127处的信息自然就不是Track信息了。 * Track自然就是没有地方存了,所以127处变的没有Track意义了,它只是Comment的一部分了。 */ struct ID3v1 //MP3的信息结构,固定的,存放在歌曲最后128个字节中 { char Identify[3]; // ID3v1为TAG char Title[30]; // 歌曲名,30个字节 char Artist[30]; // 歌手名,30个字节 char Album[30]; // 所属唱片,30个字节 char Year[4]; // 年份,4个字符 char Comment[28]; // 注释,28个字节,有时是30个, char Flag; // 标志,为0说明有音轨(下一位),不一定有 char Track; // 音轨,#,歌曲号,不一定有 char Style; // 风格流派,需要查询,不一定有 };
所以对读写取程序做些修改:
void ReadID3v1(char* pfile) { printf("读取一个MP3的信息,每个MP3的最后128个字节存储的,它有固定的结构,下面试读取之!\n"); ID3v1 mp3; FILE *pf = fopen(pfile,"r+"); printf("打开文件:%d\n",pf); fseek(pf,-128,SEEK_END); fread(&mp3,sizeof(mp3),1,pf); if (mp3.Identify[0]!='T' || mp3.Identify[1]!='A' || mp3.Identify[2]!='G' ) { printf("此歌曲不支持ID3v2标准!\n"); fclose(pf); return; } printf("TAG标志:%.3s\n",mp3.Identify); printf("曲名:%.30s\n",mp3.Title); printf("歌手:%.30s\n",mp3.Artist); printf("唱片:%.30s\n",mp3.Album); printf("年份:%.4s\n",mp3.Year); printf("注释:%.30s\n",mp3.Comment); if (mp3.Flag==0) { printf("歌曲序号:%d,流派标志:%d\n",mp3.Track,mp3.Style); } getchar(); //下面试着修改信息 memset(&mp3,0,sizeof(mp3)); printf("修改信息:\n"); mp3.Identify[0]='T'; mp3.Identify[1]='A'; mp3.Identify[2]='G'; mp3.Flag='0'; mp3.Track='5'; mp3.Style='3'; lstrcpy(mp3.Title,(LPCTSTR)"修改的名字"); lstrcpy(mp3.Artist,(LPCTSTR)"修改的作者"); lstrcpy(mp3.Album,(LPCTSTR)"修改的唱片"); lstrcpy(mp3.Year,(LPCTSTR)"1989"); lstrcpy(mp3.Comment,(LPCTSTR)"修改的注释"); fseek(pf,-128,SEEK_END); fwrite(&mp3,sizeof(mp3),1,pf); printf("over,%s\n",mp3.Title); fclose(pf); }
http://blog.csdn.net/bbdxf/article/details/7438006

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Dieses Tutorial zeigt Ihnen, wie Sie bestimmte Texte oder Phrasen auf allen geöffneten Tabs in Chrome oder Edge unter Windows finden. Gibt es eine Möglichkeit, eine Textsuche auf allen geöffneten Tabs in Chrome durchzuführen? Ja, Sie können eine kostenlose externe Weberweiterung in Chrome verwenden, um Textsuchen auf allen geöffneten Tabs durchzuführen, ohne die Tabs manuell wechseln zu müssen. Einige Erweiterungen wie TabSearch und Strg-FPlus können Ihnen dabei helfen, dies einfach zu erreichen. Wie durchsucht man Text auf allen Registerkarten in Google Chrome? Strg-FPlus ist eine kostenlose Erweiterung, die es Benutzern erleichtert, auf allen Registerkarten ihres Browserfensters nach einem bestimmten Wort, einer bestimmten Phrase oder einem bestimmten Text zu suchen. Diese Erweiterung

Mit QQ Music kann jeder Filme genießen und sich jeden Tag langweilen. Eine große Anzahl hochwertiger Songs steht zum Anhören zur Verfügung Wenn Sie sie das nächste Mal anhören, benötigen Sie keine Internetverbindung. Die hier heruntergeladenen Songs sind nicht im MP3-Format und können nicht auf anderen Plattformen verwendet werden. Daher gibt es keine Möglichkeit, sie erneut anzuhören Viele Freunde möchten die Songs ins MP3-Format konvertieren. Hier erklärt der Herausgeber, dass Sie Methoden bereitstellen, damit jeder sie verwenden kann! 1. Öffnen Sie QQ Music auf Ihrem Computer, klicken Sie auf die Schaltfläche [Hauptmenü] in der oberen rechten Ecke, klicken Sie auf [Audiotranskodierung], wählen Sie die Option [Song hinzufügen] und fügen Sie die Songs hinzu, die konvertiert werden müssen. 2. Nach dem Hinzufügen Um die Songs anzuzeigen, klicken Sie, um „In [mp3] konvertieren“ auszuwählen.

Der Reiz des Erlernens der C-Sprache: Das Potenzial von Programmierern freisetzen Mit der kontinuierlichen Weiterentwicklung der Technologie ist die Computerprogrammierung zu einem Bereich geworden, der viel Aufmerksamkeit erregt hat. Unter vielen Programmiersprachen war die Sprache C schon immer bei Programmierern beliebt. Seine Einfachheit, Effizienz und breite Anwendung machen das Erlernen der C-Sprache für viele Menschen zum ersten Schritt, um in den Bereich der Programmierung einzusteigen. In diesem Artikel geht es um den Reiz des Erlernens der C-Sprache und darum, wie man das Potenzial von Programmierern durch das Erlernen der C-Sprache freisetzt. Der Reiz des Erlernens der C-Sprache liegt zunächst einmal in ihrer Einfachheit. Im Vergleich zu anderen Programmiersprachen C-Sprache

Lernen Sie Pygame von Grund auf: Komplettes Installations- und Konfigurations-Tutorial, spezifische Codebeispiele erforderlich. Einführung: Pygame ist eine Open-Source-Spieleentwicklungsbibliothek, die mit der Programmiersprache Python entwickelt wurde. Sie bietet eine Fülle von Funktionen und Tools, mit denen Entwickler problemlos eine Vielzahl von Typen erstellen können des Spiels. Dieser Artikel hilft Ihnen, Pygame von Grund auf zu erlernen und bietet ein vollständiges Installations- und Konfigurations-Tutorial sowie spezifische Codebeispiele, um Ihnen einen schnellen Einstieg zu erleichtern. Teil eins: Python und Pygame installieren Stellen Sie zunächst sicher, dass Sie dies getan haben

Beim Bearbeiten von Textinhalten in Word müssen Sie manchmal Formelsymbole eingeben. Manche Leute wissen nicht, wie man die Stammzahl in Word eingibt, also habe ich den Redakteur gebeten, mit meinen Freunden ein Tutorial zur Eingabe der Stammzahl in Word zu teilen. Ich hoffe, es hilft meinen Freunden. Öffnen Sie zunächst die Word-Software auf Ihrem Computer, öffnen Sie dann die Datei, die Sie bearbeiten möchten, und bewegen Sie den Cursor an die Stelle, an der Sie das Stammzeichen einfügen müssen, siehe Beispielbild unten. 2. Wählen Sie [Einfügen] und dann im Symbol [Formel]. Wie im roten Kreis im Bild unten gezeigt: 3. Wählen Sie dann unten [Neue Formel einfügen]. Wie im roten Kreis im Bild unten gezeigt: 4. Wählen Sie [Radikal] und dann das entsprechende Radikal. Wie im roten Kreis im Bild unten gezeigt:

Als beliebte soziale Plattform für Kurzvideos verfügt Douyin über eine riesige Nutzerbasis. Für Douyin-Ersteller ist die Verwendung von Tags zur Gewinnung von Traffic eine wirksame Möglichkeit, die Bekanntheit von Inhalten zu erhöhen und Aufmerksamkeit zu erregen. Wie nutzt Douyin also Tags, um Traffic anzulocken? Dieser Artikel beantwortet diese Frage ausführlich für Sie und stellt verwandte Techniken vor. 1. Wie füge ich Tags auf Douyin hinzu, um Traffic anzulocken? Achten Sie beim Posten eines Videos darauf, Tags auszuwählen, die für den Inhalt relevant sind. Diese Tags sollten das Thema und die Schlüsselwörter Ihres Videos abdecken, damit Benutzer Ihr Video mithilfe von Tags leichter finden können. Die Nutzung beliebter Hashtags ist eine effektive Möglichkeit, die Bekanntheit Ihres Videos zu erhöhen. Recherchieren Sie aktuelle beliebte Tags und Trends und integrieren Sie diese in Ihre Videobeschreibungen und Tags. Diese beliebten Tags sind in der Regel besser sichtbar und können die Aufmerksamkeit von mehr Zuschauern auf sich ziehen. 3. Etikett

Wenn wir Douyin-Werke durchsuchen, sehen wir oft ein Uhrsymbol hinter dem Tag. Was genau ist diese Uhr also? Dieser Artikel konzentriert sich auf die Diskussion „Was ist die Uhr hinter dem Douyin-Label“ und hofft, Ihnen nützliche Hinweise für die Verwendung von Douyin zu geben. 1. Was ist die Uhr hinter dem Douyin-Label? Douyin wird einige heiße Themenherausforderungen starten. Wenn Benutzer teilnehmen, sehen sie nach dem Tag ein Uhrsymbol, was bedeutet, dass die Arbeit an der Themenherausforderung teilnimmt, und zeigt die verbleibende Zeit der Herausforderung an. Bei einigen zeitkritischen Inhalten wie Feiertagen, besonderen Ereignissen usw. fügt Douyin nach dem Etikett ein Uhrensymbol hinzu, um Benutzer an die Gültigkeitsdauer des Inhalts zu erinnern. 3. Beliebte Tags: Wenn ein Tag beliebt wird, fügt Douyin hinter dem Tag ein Uhrsymbol ein, um anzuzeigen, dass der Tag beliebt ist

Titel: Lernen Sie die Hauptfunktionen der Go-Sprache von Grund auf. Als einfache und effiziente Programmiersprache wird die Go-Sprache von Entwicklern bevorzugt. In der Go-Sprache ist die Hauptfunktion eine Einstiegsfunktion, und jedes Go-Programm muss die Hauptfunktion als Einstiegspunkt des Programms enthalten. In diesem Artikel wird erläutert, wie Sie die Hauptfunktion der Go-Sprache von Grund auf erlernen, und es werden spezifische Codebeispiele bereitgestellt. 1. Zuerst müssen wir die Go-Sprachentwicklungsumgebung installieren. Sie können zur offiziellen Website (https://golang.org) gehen
