Wie überprüfe ich, wie lange ein Video (mp4) die Shell benutzt?
16
Ich muss per FTP alle mp4-Dateien in ein Verzeichnis mit einer Länge von> 4 Minuten über die Shell hochladen. Ich kann kein Skript finden, um die Länge eines Videos zu überprüfen. Hat jemand eine Idee, wie man das macht?
Ist das FFmpeg-Protokollnachrichtenformat garantiert? Wenn nicht, mag ich das nicht sehr - es könnte aufhören, mit irgendeiner Veröffentlichung zu arbeiten.
Ondra Žižka
7
Mediainfo ist ein schnelles Werkzeug für diesen Zweck:
Dies gibt seltsame Ergebnisse ... wie 2679600 ... besser zu verwenden mediainfo --Inform="Video;%Duration/String%" [inputfile]... die Ihnen etwas wie 43 min 50s bekommen würde
Robert Riedl
5
Sie können versuchen, den Befehl avconv zu verwenden .
Zuerst sollten Sie installieren:
Wenn Sie den Befehl mit dem Flag -i eingeben, erhalten Sie Informationen zum Video:
avconv -i test.mp4
In der Ausgabe gibt es ein Feld namens Duration
avconv version 0.8.4-4:0.8.4-0ubuntu0.12.04.1,Copyright(c)2000-2012 the Libav developers
built on Nov6201216:51:33 with gcc 4.6.3Input#0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':Duration:00:58:28.05, start:0.000000, bitrate:888 kb/s
Stream#0.0(eng): Video: h264 (High), yuv420p, 720x404, 748 kb/s, 25 fps, 25 tbr, 20k tbn, 50 tbcStream#0.1(und): Audio: aac, 48000 Hz, stereo, s16, 127 kb/s
Jetzt können Sie den Befehl verwenden, um nur den Wert des Feldes Duration abzurufen
Dies kann auch verwendet werden , wenn avprobe- nicht erforderlich -i, aber ansonsten funktioniert es genauso. Oder ffprobefür @Pers Antwort.
Übelsuppe
4
exiftool(Ursprünglich zum Lesen von Kamerametadaten aus Bilddateien gedacht, aber später zum Lesen und Schreiben von Metadaten aus fast jeder Art von Mediendatei erweitert) ist dies sehr praktisch. Führen Sie es mit:
exiftool FILE.mp4 | grep Duration
Sie müssen wahrscheinlich exiftoolzuerst installieren , aber dies ist einfach mit dem folgenden Befehl (unter Debian und Derivaten wie Ubuntu usw.) durchzuführen:
apt install libimage-exiftool-perl
Natürlich ist diese Antwort nur eine andere Alternative. Viele der anderen Antworten sind auch gut. :)
Keine Notwendigkeit zu benutzen grepund so. Einfach exiftool -T -Duration *.mkv(oder was auch immer
Dateimuster
0
Wie Sie sehen, gibt es zahlreiche Möglichkeiten, dies zu erreichen.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONwo Mediadatei ist der Name der Datei, wird eine Ausgabe ähnlich der unten bieten. Das erste ist die Dauer des ersten Streams (normalerweise Video) und das zweite die Dauer des zweiten Streams (normalerweise Audio).
Antworten:
Dies gibt Ihnen die Länge eines Videos.
quelle
Mediainfo ist ein schnelles Werkzeug für diesen Zweck:
Weitere Optionen finden Sie in einer ausführlicheren Antwort .
In meinen Tests
ffprobe
dauert 0,3 Sekunden undmediainfo
dauert 0,09 Sekunden.quelle
mediainfo --Inform="Video;%Duration/String%" [inputfile]
... die Ihnen etwas wie 43 min 50s bekommen würdeSie können versuchen, den Befehl avconv zu verwenden .
Zuerst sollten Sie installieren:
Wenn Sie den Befehl mit dem Flag -i eingeben, erhalten Sie Informationen zum Video:
avconv -i test.mp4
In der Ausgabe gibt es ein Feld namens Duration
Jetzt können Sie den Befehl verwenden, um nur den Wert des Feldes Duration abzurufen
Art:
In meinem Fall ist das Ergebnis:
58 Minuten und 28.05 Sekunden.
Hoffe das wird hilfreich!
quelle
avprobe
- nicht erforderlich-i
, aber ansonsten funktioniert es genauso. Oderffprobe
für @Pers Antwort.exiftool
(Ursprünglich zum Lesen von Kamerametadaten aus Bilddateien gedacht, aber später zum Lesen und Schreiben von Metadaten aus fast jeder Art von Mediendatei erweitert) ist dies sehr praktisch. Führen Sie es mit:Sie müssen wahrscheinlich
exiftool
zuerst installieren , aber dies ist einfach mit dem folgenden Befehl (unter Debian und Derivaten wie Ubuntu usw.) durchzuführen:Natürlich ist diese Antwort nur eine andere Alternative. Viele der anderen Antworten sind auch gut. :)
quelle
Noch einfacher:
quelle
Zusätzlich zu pers Lösung , kann dies auf ein ganzes Verzeichnis verwendet werden:
Es kann sogar erweitert werden
| sort
, um die Dateien nach ihrer Länge zu sortieren.Sie können dies zu
.bashrc
oder hinzufügen, um dies in einem Verzeichnis.bash_aliases
tun zu könnenlsvlength | sort
quelle
ffprobe
ist eine elegantere Lösung, alsffmpeg
die einen Fehler auslöst, wenn der Ausgabepfad nicht angegeben wird.quelle
Wenn Sie die Dauer einiger Videos in einem Verzeichnis anzeigen möchten, können Sie den folgenden Befehl verwenden
quelle
grep
und so. Einfachexiftool -T -Duration *.mkv
(oder was auch immerWie Sie sehen, gibt es zahlreiche Möglichkeiten, dies zu erreichen.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
wo Mediadatei ist der Name der Datei, wird eine Ausgabe ähnlich der unten bieten. Das erste ist die Dauer des ersten Streams (normalerweise Video) und das zweite die Dauer des zweiten Streams (normalerweise Audio).quelle