Lame_enc.dll für Audio-Konvertierung in C# verwenden
Stahl 28.07.2008 - 16:06 11139 19
Stahl
Big d00d
|
Hi Leute! Ich muss für die FH ein Programm schreiben, dass mit Hilfe der Lame.dll eine Audio-Konvertierung von wave in mp3 und mp3 in wave ermöglicht. Jetzt such ich schon seit 3 Tagen nach einer Anleitung oder Funktions-Erklärung für die Lame.dll und finde nur fertig ausprogrammierte Sachen, die ich großteils leider nicht verstehe Hat wer von euch vll. einen Link zu einer Erklärung wie ich die Lame.dll richtig einbinden und ansprechen kann? MfG Stahl
|
3mind
mimimi
|
hm, in wie weit sind kenntnisse mit c# / visual studio vorhanden?
die .dll am besten zum restlichen sourcecode packen und dann rechtsclick aufs projekt im VS und "add reference..." - und dann glaub ich browse und halt auswählen.
als nächstes im sourcecode ein using mit entsprechenden namespace hinzufügen.
ab dann stehen dir alle methoden der .dll zur verfügung.
|
Stahl
Big d00d
|
Hab zwei Semester C# gelernt bis jetzt. Das soll sowas wie ein Abschlussprojekt für den Bachelor sein. Hab zwar noch 2 Semester bis dahin, nur wird in den 2 Semestern kein Programmieren mehr unterrichtet. Ich hab jetzt die DLL zum Projekt hinzugefügt. Der Namespace bereitet mit noch Probleme. Wenn ich mit "using lame_enc;" den Namespace hinzu,fügen will schreibt er mir immer das er es nicht erkennt. Danke für die schnelle Hilfe
|
3mind
mimimi
|
gib mal link für die .dll dann versuch ichs gschwind bei mir.
ist die lame_enc.dll überhaupt ein valides .net-assembly ?
Bearbeitet von 3mind am 28.07.2008, 18:05
|
vanHell
Tauren Marine
|
lame_enc.dll wird höchst warscheinlich in C geschrieben sein und nicht in C#.
|
3mind
mimimi
|
ja, hab ich mir jetzt mittlerweile auch schon gedacht, deshalb wunderts mich auch etwas wie er es im .net-projekt als reference hinzufügen konnte.
|
ica
hmm
|
|
Stahl
Big d00d
|
|
3mind
mimimi
|
ok. also da die .dll scheinbar nicht als .net assembly vorliegt ist das einbinden via reference nicht so einfach möglich. es gibt ein projekt das trotzdem in c# mit der .dll arbeiten kann (mittels [DllImport "..."]), das ganze ist jedoch dann nicht mehr so ganz trivial - aber ich denke für einen bachelor-studenten sollte es möglich sein das ganze bald zu verstehen. link: http://www.codeproject.com/KB/audio...Compressor.aspxmusst dich für den download des project-source lediglich registrieren. ich hab's mir kurz angeschaut, sollte ganz gut als "denkanstoss" passen. hth
|
that
ModeratorHoffnungsloser Optimist
|
Der nachfolgende Link führt zum Sourcecode. Leider hab ichs noch nicht geschafft den zu öffen. tar xzf lame-3.98b8.tar.gz Alternativ mit dem GUI-Frontend deiner Wahl (7-Zip kanns glaub ich). Da ist dann auch gleich der kommentierte Source zur DLL und ein kleines Beispielprogramm in C++ drin.
|
semteX
begehrt die rostschaufel
|
zum thema C dll in .NET: die einser streberlösung wär ein .NET wrapper, ansonsten sollt DLLImport den job aber auch erledigen (wieso auch ned)
|
Stahl
Big d00d
|
Danke für die Hilfe Leute Ja auf diese Sache mit dem DllImport bin ich auch schon gekommen. Hierbei ist nur das Problem, dass man die Funktionen die man aus der DLL verwenden möchte kennen muss, was bei mir nicht der Fall ist. Mir fehlt einfach irgendwie eine anständige Dokumentation zu dem angeblich sehr genialen Ding Die tar.gz hab ich schon mal it Winrar öffnen und entpacken können. Anschließend wollt ich das Projekt mit Visual C# öffnen und da hat er mir dann nur gesagt das ers nicht aufmachen kann und es war nur das Grundgerüst des Projektes zu erkennen, jedoch kein Code. Werd mir mal 7-zip holen und es damit versuchen. Nochmals Danke!
|
3mind
mimimi
|
am zip liegts nicht. du brauchst vermutlich visual c++ 6.0 oder ähnliches um das projekt richtig öffnen zu können. ich glaub mich auch zu erinnern dass eine solution für 7.1 inkludiert ist, oder? das müsste dann visual studio 2003 sein oder so.
|
3mind
mimimi
|
nachtrag: hier ein auszug über methoden der lame_enc und wie diese mittels dllimport eingebunden werden können: source hab ich eh schon weiter oben verlinkt. /// <summary>
/// This function should be called after encoding the last chunk in order to flush
/// the encoder. It writes any encoded data that still might be left inside the
/// encoder to the output buffer. This function should NOT be called unless
/// you have encoded all of the chunks in your stream.
/// </summary>
/// <param name="hbeStream">Handle of the stream.</param>
/// <param name="pOutput">Where to write the encoded data. This buffer should be
/// at least of the minimum size returned by beInitStream().</param>
/// <param name="pdwOutput">Returns number of bytes of encoded data written.</param>
/// <returns>On success: BE_ERR_SUCCESSFUL</returns>
[DllImport("Lame_enc.dll")]
public static extern uint beDeinitStream(uint hbeStream, [In, Out] byte[] pOutput, ref uint pdwOutput);
/// <summary>
/// Last function to be called when finished encoding a stream.
/// Should unlike beDeinitStream() also be called if the encoding is canceled.
/// </summary>
/// <param name="hbeStream">Handle of the stream.</param>
/// <returns>On success: BE_ERR_SUCCESSFUL</returns>
[DllImport("Lame_enc.dll")]
public static extern uint beCloseStream(uint hbeStream);
/// <summary>
/// Returns information like version numbers (both of the DLL and encoding engine),
/// release date and URL for lame_enc's homepage.
/// All this information should be made available to the user of your product
/// through a dialog box or something similar.
/// </summary>
/// <param name="pbeVersion"Where version number, release date and URL for homepage
/// is returned.</param>
[DllImport("Lame_enc.dll")]
public static extern void beVersion([Out] BE_VERSION pbeVersion);
[DllImport("Lame_enc.dll", CharSet=CharSet.Ansi)]
public static extern void beWriteVBRHeader(string pszMP3FileName);
[DllImport("Lame_enc.dll")]
public static extern uint beEncodeChunkFloatS16NI(uint hbeStream, uint nSamples, [In]float[] buffer_l, [In]float[] buffer_r, [In, Out]byte[] pOutput, ref uint pdwOutput);
[DllImport("Lame_enc.dll")]
public static extern uint beFlushNoGap(uint hbeStream, [In, Out]byte[] pOutput, ref uint pdwOutput);
[DllImport("Lame_enc.dll", CharSet=CharSet.Ansi)]
public static extern uint beWriteInfoTag(uint hbeStream, string lpszFileName);
|
Stahl
Big d00d
|
Ich glaub ich weis jetzt in welcher Sprache die dll geschrieben wurde. Ist es möglich, dass sie in Visual Basic geschrieben wurde? Wenn man nach .vcproj googelt findet man u.a. folgenden Eintrag http://filext.com/file-extension/VCPROJDort führt einen ein Link weiter auf die MS-Homepage in den Visual Basic Bereich. Werd mal versuchen mir das VS C 2008 von der Microsoft Homepage zu downloaden. MfG Edit: Hab mich bei Codeproject angemeldet und das Projekt gedownloadet. Werds mir vermutlich heute in der Nacht noch anschauen.
Bearbeitet von Stahl am 29.07.2008, 19:51
|