Wie überprüfe ich, wie lange ein Video (mp4) die Shell benutzt?


Antworten:


23

Dies gibt Ihnen die Länge eines Videos.

ffmpeg -i myvideo 2>&1 | grep Duration | cut -d ' ' -f 4 | sed s/,//

Funktioniert auch für Remote-Video-URLs, z. B. ffmpeg -i " instagram.fewr1-1.fna.fbcdn.net/t50.2886-16/… " 2> & 1 | grep Duration | cut -d '' -f 4 | sed s /, //
Skidadon

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:

$ mediainfo --Inform="Video;%Duration%"  [inputfile]

Weitere Optionen finden Sie in einer ausführlicheren Antwort .

In meinen Tests ffprobedauert 0,3 Sekunden und mediainfodauert 0,09 Sekunden.


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:

Installation über das Software Center

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 Nov  6 2012 16:51:33 with gcc 4.6.3
Input #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 tbc
    Stream #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

Art:

avconv -i file.mp4 2>&1 | grep 'Duration' | awk '{print $2}' | sed s/,//

In meinem Fall ist das Ergebnis:

00:58:28.05

58 Minuten und 28.05 Sekunden.

Hoffe das wird hilfreich!


1
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. :)


2

Noch einfacher:

avprobe file.mp4 -show_format_entry duration

Ich erhalte derzeit die Meldung "Option 'show_format_entry' ist veraltet, verwenden Sie stattdessen '-show_entries format = duration'"
Faheem Mitha

1

Zusätzlich zu pers Lösung , kann dies auf ein ganzes Verzeichnis verwendet werden:

for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,//  | tr -d "\n" && echo " $f"; done

Es kann sogar erweitert werden | sort, um die Dateien nach ihrer Länge zu sortieren.

Sie können dies zu .bashrcoder hinzufügen, um dies in einem Verzeichnis .bash_aliasestun zu können lsvlength | sort

alias lsvlength='for f in *; do ffmpeg -i "$f" 2>&1 | grep Duration | cut -d " " -f 4 | sed s/,//  | tr -d "\n" && echo " $f"; done'

1

ffprobeist eine elegantere Lösung, als ffmpegdie einen Fehler auslöst, wenn der Ausgabepfad nicht angegeben wird.

ffprobe video.mp4 2>&1 | grep -E '^ +Duration' | cut -d':' -f2- | cut -d, -f1

0

Wenn Sie die Dauer einiger Videos in einem Verzeichnis anzeigen möchten, können Sie den folgenden Befehl verwenden

exiftool * | grep ^ Duration | cut -d '' -f 26


1
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).

  DURATION        : 00:21:40.132000000
  DURATION        : 00:21:40.062000000
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.