Es scheint einen etwas alten Thread zu diesem Thema hier zu geben: Ссылка
Die letzte Schlussfolgerung war, eine benutzerdefinierte Bindung an lame_enc.dll über Python- & gt; C-Bindungen zu erstellen.
Der Grund für diese Schlussfolgerung war, dass die bestehenden Bindungsbibliotheken (pymedia / py-lame) nicht gepflegt wurden.
Leider hat der Typ es nicht zur Arbeit gebracht:)
Vielleicht sollten Sie weiterhin subprocess
verwenden. Sie können diese Wahl nutzen, Ihre Codierung auf einer etwas höheren Ebene abstrahieren und den Code / die Strategie wiederverwenden, um optional andere Befehlszeilencodierungstools (wie zB ogg oder shn tools) auszuführen.
Ich habe mehrere Audio-Ripping-Tools gesehen, die diese Strategie übernehmen.
Ich habe mit Python Audio Tools gearbeitet, das Konvertierungen zwischen verschiedenen Audioformaten durchführen kann.
Ich habe es bereits verwendet, um .wav-Dateien in mp3, .flac und .m4a zu konvertieren.
Wenn Sie LAME zum Verschlüsseln Ihrer MP3s (und nicht von PyMedia) verwenden möchten, können Sie immer ctypes verwenden um die lame encoder DLL (oder .so, wenn Sie unter Linux sind) zu umhüllen. Der genaue Wrapper-Code, den Sie verwenden werden, wird an die LAME-DLL-Version gebunden sein (und es gibt leider viele, die herumfliegen), also kann ich Ihnen nicht wirklich ein Beispiel geben, aber die Ctypes-Dokumente sollten klar genug sein über das Einbetten von DLLs.
Vorbehalt: relativ neuer Programmierer hier und ich hatte keine Notwendigkeit, Audiodateien vorher zu konvertieren.
Wenn ich jedoch verstehe, was Sie serverseitig richtig meinen, suchen Sie vielleicht nach einem guten Ansatz für die Verwaltung von Massenkonvertierungen, und Ihr Interesse an einer Python-Lösung könnte zum Teil darin bestehen, die Ressource besser verwalten zu können verwenden oder in Ihre Verarbeitungskette integrieren. Ich hatte ein ähnliches Problem / Ziel, das ich mit einer Mischung aus Merlyns Empfehlung und Sellerie gelöst habe. Ich benutze keinen Django-Sellerie, aber wenn dies für ein Django-basiertes Projekt ist, könnte das auch für dich interessant sein. Mehr über Sellerie erfahren Sie hier:
Je nachdem, was Sie bereits eingerichtet haben, ist möglicherweise etwas Zeit für die Einrichtung erforderlich. Um alles nutzen zu können, müssen Sie Rabbitmq / Erlang installiert haben, aber wenn Sie den Anleitungen auf den obigen Seiten folgen, ist es jetzt ziemlich schnell.
Hier ist ein Beispiel, wie ich Sellerie mit Subprozess verwende, um ein ähnliches Problem anzugehen. Ähnlich wie bei dem obigen Vorschlag des Posters benutze ich subprocess, um ffmpeg aufzurufen, was für Videotools so gut ist wie es geht und wahrscheinlich auch für Audio-Tools so gut ist wie es geht. Ich füge ein bisschen mehr als notwendig hier ein, um Ihnen ein Gefühl dafür zu geben, wie Sie Ihr eigenes ein wenig konfigurieren könnten.
%Vor%Lass es mich wissen, wenn dir das nützlich ist. Ich bin relativ neu, um Fragen hier zu beantworten und bin nicht sicher, ob meine Versuche hilfreich sind oder nicht. Viel Glück!
Nun, Gstreamer hat das "hässliche Plugin" lamemp3enc und es gibt Python-Bindungen für Gstreamer (gst-python 1.2, unterstützt Python 3.3). Ich habe nicht versucht, diesen Weg selbst zu gehen, also bin ich nicht wirklich in der Lage, etwas zu empfehlen ... Ehrlich gesagt scheint mir eine Subprozesslösung viel einfacher, wenn nicht "sauberer" zu sein.