2010-07-31 7 views
5

Ich habe ein paar Video-Container-Dateien, die Audio und Video in verschiedenen Codecs enthalten. Jetzt möchte ich den Container aus einem Python-Skript untersuchen, um zu wissen, welcher Codec für Audio + Video verwendet wird. Dies ist auf einer Linux-Box, so dass ich bei Bedarf alle Tools zur Verfügung habe.Python: Erkenne Codecs in einem Video-Container

Ich dachte, dass vielleicht gstreamer mir hier helfen könnte, aber ich konnte keine API finden, die mir hier helfen könnte.

Irgendwelche Ideen? Ich bin auch für jeden Vorschlag offen, muss nicht gstreamer sein, solange es freie Software ist :-) fs

Antwort

3

Versuchen Sie, die ffmpeg Quelle herunterladen und schauen Sie sich die Quelle für ihre Befehlszeilenprogramme. Ich habe in der Vergangenheit ähnliche Dienstprogramme gehackt. Ich posten meine Lösung nicht, weil ffmpeg gerne ihre API ändert, so dass es unwahrscheinlich ist, dass mein alter Code mit der aktuellen Version kompiliert wird. Sie sollten genug Arbeit leisten, um einen Codec-Kontext zu erstellen, den Sie überprüfen können, um zu bekommen, was Sie brauchen.

Einige andere Alternativen:


EDIT:

http://code.google.com/p/pyffmpeg/ könnte haben, was Sie wollen (ich habe es nicht selbst benutzt).

+0

Also bedeutet dies, dass es keine Bibliothek gibt, die diese Informationen zurückgeben kann? –

+0

Ich schaute auf pyffmpeg, aber ich konnte nicht herausfinden, wie ich die Information bekommen sollte, die ich wollte. Auch wird es nicht auf meinem Mac kompilieren ohne umfangreiche Patches von den Mailing-Listen, und selbst dann gibt es mir nur einen Busfehler 10, wenn ich versuche, eine Datei damit zu öffnen. –

1

Sie können decodebin2 in Gstreamer verwenden. Werfen Sie einen Blick auf TAE für Codebeispiele.

+0

danke für den Zeiger, sieht so aus, als ob das ziemlich genau das tut, was ich brauche ... –

6
ffprobe -show_format -show_streams -loglevel quiet -print_format json YOUR_FILE 

Rufen Sie dies einfach mit subprocess.check_output auf und Sie erhalten eine schöne JSON-Beschreibung Ihrer Mediendatei. Wenn Sie es benötigen, um die Daten von stdin zu erhalten, ersetzen Sie YOUR_FILE mit pipe: 0.

ffprobe kommt mit ffmpeg.

Verwandte Themen