Immer FFProbe Informationen Mit Python
Habe ich schon versucht, um dies herauszufinden, für immer jetzt (ich bin neu in die Programmierung) und ich kann ' T es herausfinden.
Ich versuche, ein Skript erstellen, dass wird testen Sie die Datei, und geben Sie mir ein Ausgang, von dem bekomme ich Informationen wie "Audio-Format", dass ich dann in den Dateinamen. Allerdings kann ich noch nicht einmal das Skript, um wieder alle Datei-info. Ich habe eine Wand schlagen beim einlegen einer input-Datei...
Also an dieser Stelle ich brauche einfach nur Hilfe, um es ausspucken info auf der Grundlage der argvs habe ich geworfen. Hoffentlich werde ich in der Lage sein, um herauszufinden, wie analysieren Sie die audio-Infos von dort.
Mein Versuch zu sein scheint, dass in der Nähe:
#!/usr/bin/python
import os, sys, subprocess, shlex, re
from subprocess import call
def probe_file(filename):
p = subprocess.Popen(['/opt/local/bin/ffprobe', '-show_format', '-pretty', '-loglevel quiet', -i filename], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
print filename
print p.communicate()
[probe_file (f) for f in os.listdir('.') if not f.startswith('.')]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Paar Probleme in Ihrem code
-i filename
das ist ein syntax-Fehler, verwenden'-i '+filename
stattshell=True
ist in der Regel nicht benötigt und unnötige Belastung.Andere als das, es scheint zu funktionieren, werden Sie nicht sehen, die Ausgabe nach der Befestigung #1 ?
Edit: Sieht aus wie Sie haben problem mit ffprobe Kommandozeile, also ich habe es installiert und änderungen, die Sie benötigen, sind
-i
flag-input-Datei ist nur bestanden, wie im letzten argument.-logelevel
option für loglevequiet
als separate Argumente, d.h.[..., '-loglevel', 'quiet',..]
So, nachdem diese änderungen hier ist ein Beispiel-Skript
Und ich sehe die richtige Ausgabe:
...'/opt/local/bin/ffprobe: missing argument for option 'i foo'\n")
/opt/local/bin/ffprobe -pretty -i 'foo.avi'
Informationen zurück; der Befehl/opt/local/bin/ffprobe -pretty -i 'foo.avi'\n
tut; aber ich kann nicht herausfinden, was zum Teufel ist das hinzufügen der\n
/n
ist es zu töten.Hier ist die Technik, die ich denke, es ist sowohl einfach zu bedienen und leicht zu analysieren ist (getestet mit ffmpeg 3.x):
Verfügbaren Daten stammt aus einer string-Repräsentation, die wie folgt aussieht:
AttributeError: module 'xml.etree' has no attribute 'ElementTree'
Es ist FFProbe-wrapper für Python (https://pypi.org/project/ffprobe/).
Können Sie es leicht:
(sudo) pip install ffprobe
Typische Verwendung:
Alternative zu FFProbe ist pymediainfo Bibliothek (https://pymediainfo.readthedocs.io/en/stable/). Sie können Verwendung finden in der Dokumentation der Website.