MP3 Daten auslesen(Header, Frames, ID3v1, ID3v1E, ID3v2.2.0)
Übersicht

![]() |
Xaymarehemals "Cgamer"Betreff: MP3 Daten auslesen(Header, Frames, ID3v1, ID3v1E, ID3v2.2.0) |
![]() Antworten mit Zitat ![]() |
---|---|---|
So da ich ja gesagt habe, das ID3v2 unterstützung reinkommt, habe ich nun ID3v2.2.0 eingebaut.
Nun werden auch Frames(deren Daten) ausgelesen und mehrere MP3Header(Laut einigen Formatbeschreibungen kann eine MP3 Datei recht viele haben, immer nach jedem Frame). Unterstützt nun: ID3v2.2.0 ID3v1 ID3v1 Extended Fehler könnt ihr über IMP3_LastError und IMP3_LastErrorDesc auslesen. Zurückgegeben wird ein MP3Data eintrag, der mit weiteren anderen Einträgen verlinkt ist. BlitzBasic: [AUSKLAPPEN] ;Type Based IMP3 So, kein Beispiel vorhanden. Die Type ist eigentlich selbserklärend genug. Edit: Ein paar fixes und eine Funktion hinzugefügt die einem die ID3v2 Frame Daten holte. ![]() Edit: Noch ein fix, sollte nun bei einer nicht-unterstützten ID3v2 version keinen ID3v2 Typeeintrag mehr anlegen. Edit: Und noch einer! LAME kodierte MP3s sollten nun richtig erkannt werden bzw. deren ID3v1 TAG. |
||
- Zuletzt bearbeitet von Xaymar am Fr, Okt 19, 2012 14:15, insgesamt 6-mal bearbeitet
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm, warum benutzt du dafür massenhaft Globals? Ich fände ein Type besser geeignet. | ||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Angewohneit aus C++ . Und die Type wäre auch nicht kleiner ![]() |
||
Warbseite |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wäre aber übersichtlicher, ließe sich mit weniger Schreibarbeit benutzen, und man könnte mehrere Tag-Sammlungen gleichzeitig speichern, statt dass die globalen Variablen jedesmal überschrieben werden. ![]() Xaymar hat Folgendes geschrieben: Angewohneit aus C++ . ...du programmierst in C++ un-objektorientierter als es in BlitzBasic möglich wär? :O
|
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
manchmal. Je nachdem was die Situation zulässt. Das ist zum Beispiel nun ein Teil aus XaymarHelper.dll .
Code: [AUSKLAPPEN] #include <windows.h>
#define DLL_EXPORT extern "C" _declspec(dllexport) #define DLL_IMPORT extern "C" _declspec(dllimport) #define DLL_CALL _stdcall WNDPROC gBlitzProc; HWND gBlitzWindow; int iClose; int MainMonitorX, MainMonitorY; int MainMonitorW, MainMonitorH; DLL_EXPORT int DLL_CALL InstallCloseHandler(char *BlitzWindowName); DLL_EXPORT int DLL_CALL GetWindowClose(); DLL_EXPORT int DLL_CALL UnInstallCloseHandler(); DLL_EXPORT void DLL_CALL GetMainMonitorSize(int Bank); DLL_EXPORT void DLL_CALL CursorBounds(int X, int Y, int W, int H); BOOL APIENTRY DllMain( HANDLE hModule, DWORD fdwReason, LPVOID lpReserved ) { return TRUE; } DLL_EXPORT int DLL_CALL GetWindowClose() { int RetVal;RetVal = iClose; iClose = iClose-1; if (iClose < 0) iClose = 0; return RetVal; } DLL_EXPORT int DLL_CALL InstallCloseHandler(char *BlitzWindowName) { gBlitzWindow = FindWindow("Blitz Runtime Class", BlitzWindowName); if(!gBlitzWindow) return false; gBlitzProc = (WNDPROC)SetWindowLong(gBlitzWindow, GWL_WNDPROC, (LONG)WindowProc); return true; } Und das ein Teil aus BlitzNewton: Code: [AUSKLAPPEN] class BlitzNewtonBody {
public: BlitzNewtonBody(BlitzNewtonWorld* BNWorld, BlitzNewtonCollision* BNCollision) {} ~BlitzNewtonBody() {} void SetGravityAffection(bool bState) {} bool GetGravityAffection() {} void SetVelocity(float fX, float fY, float fZ) {} void GetVelocity(float* fVelo) {} void SetForce(float fX, float fY, float fZ) {} void GetForce(float* fForc) {} void SetAddForce(float fX, float fY, float fZ) {} void AddForce(float fX, float fY, float fZ) {} void GetAddForce(float* fForc) {} void SetTorque(float fX, float fY, float fZ) {} void GetTorque(float* fTorq) {} void SetAddTorque(float fX, float fY, float fZ) {} void AddTorque(float fX, float fY, float fZ) {} void GetAddTorque(float* fTorq) {} void SetMassMatrix(float fMass, float fiX, float fiY, float fiZ) {} void GetRotationN(float* fRot) {} void SetFrozen(bool bFrozen) {} bool GetFrozen() {} void OverridePosition() {} void OverrideRotation() {} void SetMaterialGroupID(int iMaterial) {} BlitzNewtonMatrix* GetMatrix() {} void SetMatrix(BlitzNewtonMatrix* BNMatrix) {} BlitzNewtonWorld* World() {} BlitzNewtonCollision* Collision() {} NewtonBody* Body() {} private: BlitzNewtonWorld* blitzWorld; BlitzNewtonCollision* blitzCollision; BlitzNewtonMatrix* blitzMatrix; NewtonBody* newtonBody; bool bAutoDeleteMatrix; bool bGravity; float* fForce; float* fTorque; }; Und da BlitzBASIC nun mal nicht OOP kann(, außer man nimmt extra Parser,) nehme ich Globals. Blitz kann zwar Type/LinkedList basiert(OOP ist afaik was anderes, da muss man die Dinge selbst verwalten ![]() Punkt 1: "Wäre aber übersichtlicher, ließe sich mit weniger Schreibarbeit benutzen" Hmm, selbe Schreibarbeit, gleich übersichtlich. Kommt wohl auf den Betrachter an. Hätte natürlich auch mit meiner ersten Idee hier auftauchen können(Banks) aber da wurde es mir nach der Zeit zu bunt. Punkt 2: "man könnte mehrere Tag-Sammlungen gleichzeitig speichern" Kann man auch jetzt noch. einfach mal das selber machen, was sonst andere für euch übernehmen. Dazu ist es ja gedacht. Ich fokussiere mich jetzt mal wieder auf ID3v2. Wall-of-Text Closed. End of File. ReadAvail = -1 |
||
Warbseite |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die meisten Menschen benutzen ID2V2 zum Speichern weiterer Informationen. Daher wäre es ratsam zumindest dieses Format noch mit zu unterstützen und dein Skript immer die beste Lösung wählt.
Kannst dir ja auch folgenden Link ansehen. Da hab ich das auch gemacht. Die Funktion liest mp3: ID2V1 und ID2V2, ogg -Tag und Tracknamen aus Trackermodulen wie it, xm, mod, s3m, mtm. Auch wenn die Trackermodule unwichtig sind, sollte mp3 komplett unterstützt werden. Ansonsten bin ich gespannt was noch daraus wird. Ein Gräul finde ich jedoch deine beiden Arrays. Das geht bestimmt auch besser und kürzer. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm das mit den Arrays geht zwar kürzer, aber besser (in Geschwindigkeit) gehts kaum, bzw fällt mir keine schnellere methode ein, außer Banks. Besser (in Platz/RAM verbauch) gehts auch noch mit Bank und Kompression, aber ich möchte mal bei geschwindigkeit bleiben).
Hmm und Mist das das schon jemand vor mir gemacht hat :/ . Aber so bin ich wenigstens an http://www.id3.org/id3v2-00 . (Kann deins die Bilder auslesen?) |
||
Warbseite |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Xaymar hat Folgendes geschrieben: Punkt 2: "man könnte mehrere Tag-Sammlungen gleichzeitig speichern"
Kann man auch jetzt noch. einfach mal das selber machen, was sonst andere für euch übernehmen. Dazu ist es ja gedacht. Öh, nun ja. Daten von 2 MP3s gleichzeitig benutzen, mit deinen Globals: BlitzBasic: [AUSKLAPPEN] IdentifyMP3(File1)Daten von 2 MP3s gleichzeitig benutzen, "objektorientiert": BlitzBasic: [AUSKLAPPEN] Local Data1.MP3Data = IdentifyMP3(File1) Hier wird dann auch der Punkt 1 mit der Übersichtlichkeit und Schreibarbeit deutlich. Bist du sicher, dass dir da kein Unterschied in der Benutzbarkeit auffällt? ![]() |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzBasic: [AUSKLAPPEN] Type MP3Data >_> Wo zur Hölle ist dein Problem, FF? |
||
Warbseite |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe kein Problem, ich hab eigentlich nur einen Vorschlag gemacht.
Ich geb die Frage mal zurück, was soll die Fettschrift? |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.id3.org/id3v2-00 wird nun unterstützt, bald kommt noch http://www.id3.org/id3v2.3.0 und http://www.id3.org/id3v2.4.0-structure hinzu. Zusätzlich dazu bin ich nun vom Prototyp auf RC gewechselt.
Viel Spaß mit den neuen Möglichkeiten. @FF: Die Fettschrift heißt das du anfängst mir auf den Geist zu gehen. |
||
Warbseite |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wir bleiben hier alle freundlich und nett oder Onkel Blade wird auch mal böse.
Xaymar: Er gibt dir Feedback, was geht Dir daran so auf den Senkel? |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
FireballFlame hat Folgendes geschrieben: Daten von 2 MP3s gleichzeitig benutzen, mit deinen Globals: BlitzBasic: [AUSKLAPPEN]
IdentifyMP3(File1) Das. Die Behauptung das man das so benutzen muss "wenn man meine globals nutzt". |
||
Warbseite |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meinst Du nicht dass es Sinn und Zweck einer Diskussion in einem Forum ist sich auszutauschen?
Ich kann seitens FBF keinerlei beleidigendes oder angreifendes Verhalten sehen. Von Dir durchaus. Niemand sagt dass einer von euch komplett recht hat und der andere Scheissdreck redet. Aber man kann doch voneinander lernen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, wäre es möglich auch noch eine setzen-Funktion zu machen statt nur auszulesen?
mfG, Thorsten |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group