Gibt es irgendeine LAME C++ - wrapper\simplificateur (arbeiten auf Linux Mac und Win aus reiner code)?
Möchte ich die Erstellung von einfachen pcm-mp3-C++ - Projekt. Ich möchte es verwenden, LAHM. Ich Liebe LAHM, aber es ist wirklich groß. also brauche ich eine Art OpenSource-arbeiten aus reiner code mit rein lame code-workflow simplificateur. So zu sagen, ich gebe es zu-Datei mit PCM-und DEST-Datei. Rufen Sie etwas wie:
LameSimple.ToMP3(file with PCM, File with MP3 , 44100, 16, MP3, VBR);
Erz so etwas in 4 - 5 Linien (Beispiele natürlich sollte vorhanden sein) und ich habe vhat, die ich brauchte, Es sollte leicht sein, einfach, powerfool, opensource, plattformunabhängig.
Gibt es so etwas?
- Trotz der Lahmen Quellen sehr groß ist, gibt es keine Notwendigkeit zu lernen, voller Quellen. Sie müssen nur schauen, Trog-parsing-Befehl Kalk-Parameter und deren Zuordnung zu den internen lame-Strukturen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lame ist wirklich nicht schwer zu bedienen, obwohl es eine Menge von optionale Konfiguration-Funktionen, wenn Sie Sie benötigen. Es dauert etwas mehr als 4-5 Zeilen eine Datei verschlüsselt wird, aber nicht viel mehr. Hier ist ein funktionierendes Beispiel, das ich zusammengeschlagen (nur die grundlegende Funktionalität, keine Fehlerprüfung):
gcc lametest.c -lmp3lame
(nach der Installation der Bibliothek und header-Dateien mitsudo apt-get install libmp3lame-dev
). Ich habe keine Ahnung, wie zu installieren und die Verknüpfung mit den Bibliotheken auf Mac und Windows, fürchte ich.sudo apt-get install libmp3lame-dev
. Ansonsten verwenden Sie Ihre distribution Paket-manager, um die Suche für sowas, oder laden Sie sich den Quelltext von sourceforge.net/projects/lame/files und Folgen Sie alle Anweisungen, die Sie dort finden, zu bauen und zu installieren.lame_encode_buffer_interleaved
?inspiriert von Mike Seymour ' s Antwort, die ich erstellt eine Reine C++ - wrapper, welches es erlaubt, zu codieren /decodieren von WAV-und MP3-Dateien in nur 2 Zeilen code
keine Notwendigkeit, die Mühe über sample-rate -, byte-rate und die Anzahl der Kanäle - diese info stammt aus WAV-oder MP3-Datei während der Encodierung /Decodierung.
Die Bibliothek nicht mit der alten C-i/o-Funktionen, aber C++ - streams nur. Ich finde es mehr elegant.
Zur Bequemlichkeit halber erstellte ich eine sehr dünne C++ - wrapper über LAHM und nannte es lameplus und eine kleine Bibliothek für die Extrahierung von sampling-Daten aus WAV-Dateien.
Alle Dateien können hier gefunden werden:
encoding/decoding: https://github.com/trodevel/convimp3
lameplus: https://github.com/trodevel/lameplus
wav-handling: auch auf github-repository ist wave
Habe ich erfolgreich eingesetzt libmp3lame in der Weise, die mike seymour vorgeschlagen.
Ich bin jetzt versucht, den gleichen Ansatz verwenden, verwenden Sie posix-threads, um die Geschwindigkeit der Codierung.
Ich bin greating eine lame_t Zeiger, und habe mehrere threads bits der Umwandlung,
aufpassen, dass jeder thread hat einen eindeutigen bit des pcm-Spur, die es codiert.
Benutze ich eine Globale lame_t Struktur, die verwendet wird, für die Kodierung in jedem thread.
Mein code funktioniert für 1 thread (keine parallele Ausführung), es funktioniert auch, wenn ich Verzögerung der thread-Erstellung im parallel-Modus (so, dass es keine parallele Ausführung, aber die Datenstrukturen sind arrays).
Wenn ich meinen code in parallel-Modus, bekomme ich eine Menge Fehler wie
Für referernce füge ich den code, den ich verwende, das stellt so in Ordnung.
Vielleicht jemand weiß, ob lahm nicht verwendet werden können in dieser Weise in parallelen code. Ich fand keine Hinweise, ob dies möglich ist oder nicht.
Das problem scheint zu sein, dass die Globale lame_t Struktur zugegriffen wird von mehreren threads zur gleichen Zeit. Ich dachte, dass dies wäre nur dann zu Lesen, also kein problem, aber ich scheine zu irren.
Ich dachte auch, dass ein workaround könnte sein, die lame_t Objekt für jeden thread.
Ich habe versucht, dass mit dem threads zu Kodieren gegenseitig bits der original-wav-Datei.
Der code wird kompiliert und läuft ohne Probleme, aber die resultierende Datei enthält keinen sound.
Wenn jemand interessiert ist, kann ich den code hinzufügen. Es ist nur eine kleine Modifikation obigen code mit lame_t wird ein array der Größe NTHREADS.
Habe ich diese zu arbeiten, indem Sie ändern 41000 auf rund 8.000:
zu
Zusammengestellt und prog.c mit:
Die Datei.pcm klingt nicht gut als Datei.mp3. Ich bekam eine perfekte Konvertierung, wenn ich dieses bash-Befehl: