2009-08-07 4 views

Antwort

2

Sieht aus wie PyMedia tut dies:

http://pymedia.org/

und einige mehr hier Informationen zu den verschiedenen Formaten zu konvertieren, während die Einstellung der Bitrate:

http://pymedia.org/tut/recode_audio.html

z.B.

params= { 
'id': acodec.getCodecId('mp3'), 
'bitrate': r.bitrate, 
'sample_rate': r.sample_rate, 
'ext': 'mp3', 
'channels': r.channels } 
enc= acodec.Encoder(params) 
+1

PyMedia sieht vielversprechend aus. Obwohl es aussieht, als ob sie aufhören, es nach Python 2.3 –

3

Auch sollte die Python Audio Tools der Lage sein, den Job mit weniger Bedarf an anderen Bibliotheken zu tun, die einfacher sein könnte, wenn Sie dieses Konto auf einem gemeinsamen Web-Hosting zu tun. (Aber zugegebenermaßen habe ich es nicht versucht, also kann ich nicht bestätigen, wie brauchbar es ist.)

1

Eine weitere Option, um die Installation von Python-Modulen für diese einfache Aufgabe zu vermeiden, wäre einfach "lame" oder andere Befehlszeilen-Encoder auszuführen aus dem Python-Skript (mit dem Popen-Modul).

4

Ich verwende die Python-Bindungen für gstreamer. Es ist ein bisschen schwer zu beginnen, aber sobald du gehst, ist fast alles möglich.

in der Befehlszeile (aus gstreamer's documentation):

gst-launch -v filesrc location=music.wav ! decodebin ! audioconvert ! audioresample ! lame bitrate=192 ! id3v2mux ! filesink location=music.mp3 

Der Eingang filesrc location=... etwas gstreamer kann spielen könnte, nicht nur .wav. Sie könnten etwas hinzufügen, das als Caps-Filter bezeichnet wird, um vor der Codierung auf eine bestimmte Rate zu resampeln.

In Ihrem Python-Programm würden Sie gst.parse_launch(...) verwenden, die filesrc- und filesink-Elemente abrufen und Setter aufrufen, um die Eingabe- und Ausgabedateinamen zu ändern.

2

Sie können das ctypes-Modul verwenden, um Funktionen direkt aus dynamischen Bibliotheken aufzurufen. Es erfordert nicht, dass Sie externe Python-Bibliotheken installieren, und es hat eine bessere Leistung als Befehlszeilen-Tools, aber es ist normalerweise schwieriger zu implementieren (und natürlich müssen Sie eine externe Bibliothek bereitstellen).

+0

wow zu unterstützen, wusste nicht, wie das gemacht wurde. Große +1 für den Aufruf dynamischer Bibliotheken. –

24

Ich schrieb a library dass = D

from pydub import AudioSegment 
AudioSegment.from_file("/input/file").export("/output/file", format="mp3") 

Einfach zu tun entworfen!

eine Bitrate zu spezifizieren, sondern nur die kwarg bitrate verwenden ...

from pydub import AudioSegment 
sound = AudioSegment.from_file("/input/file") 
sound.export("/output/file", format="mp3", bitrate="128k") 
+0

Das sieht gut aus! Kannst du die Qualität des MP3s angeben? Ich würde es lieben, dies in einem Projekt zu verwenden, aber nicht in der Lage zu sein, die Qualität zu setzen, wäre ein Hingucker für mich. – Nick

+0

Gibt es eine Möglichkeit, eine Bitrate für die Ausgabedatei einzurichten? – SaulTigh

+0

gibt es tatsächlich! – Jiaaro

Verwandte Themen