PHP und FFMPEG - Intelligente Videokonvertierung

Ich habe eine seltsam schwierige Aufgabe zu erfüllen. Ich dachte, es wäre einfach, aber alle meine Bemühungen waren erfolglos.

Ich konvertiere Videos, die in ein PHP-Skript hochgeladen wurden, aus verschiedenen Formaten (.avi, .mpg, .wmv, .mov usw.) in ein einziges .flv-Format. Die Konvertierung funktioniert prima, aber ich habe Probleme mit der Auflösung der Videos.

Dies ist der Befehl, den ich gerade ausführe (mit PHP-Versionen):

ffmpeg -i $original -ab 96k -b 700k -ar 44100 -s 640x480 -acodec mp3 $converted

Sowohl $ original als auch $ convert enthalten die vollständigen Pfade zu diesen Dateien. Mein Problem ist, dass dies immer zu 640x480 konvertiert (wie ich es sage), auch wenn die Quelle kleiner ist. Offensichtlich ist dies eine Verschwendung von Speicherplatz und Bandbreite, wenn das Video heruntergeladen wird. Dies berücksichtigt auch nicht, dass Eingabevideos in einem anderen Seitenverhältnis als 4: 3 vorliegen. Wenn ich ein 16: 9-Video hochlade, führt dies zu einer "squished" -Konvertierung.

Es gibt drei Dinge, die ich tun muss:

Bestimmen Sie das Seitenverhältnis des Originalvideos.Wenn nicht 4: 3, oben und unten mit schwarzen Balken auffüllen.Konvertieren Sie in 640 x 480, wenn entweder die Abmessung des Originals größer ist oder ein Seitenverhältnis von 4: 3 in Bezug auf die Breite / Höhe des Originals (je nachdem, welches Format näher an 640 x 480 liegt).

Ich bin gelaufenffmpeg -i auf ein paar Videos, aber ich sehe kein konsistentes Format oder keinen konsistenten Ort, um die Auflösung des Originals zu finden. Sobald ich in der Lage bin, das herauszufinden, weiß ich, dass ich "rechnen" kann, um die richtige Größe herauszufinden und Auffüllen anzugeben, um das Seitenverhältnis mit -padttop, -padbottom usw. festzulegen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage