Come verificare da quanto tempo un video (mp4) utilizza la shell?


Risposte:


23

Questo vi darà la lunghezza di un video.

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

Funziona anche con URL video remoti, ad es. Ffmpeg -i " instagram.fewr1-1.fna.fbcdn.net/t50.2886-16/… " 2> & 1 | Durata grep | cut -d '' -f 4 | sed s /, //
skidadon,

Il formato dei messaggi di registro di FFmpeg è garantito? In caso contrario, non mi piace così tanto: potrebbe smettere di funzionare con qualsiasi versione.
Ondra Žižka,

7

Mediainfo è uno strumento veloce per questo scopo:

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

Puoi trovare più opzioni in una risposta più approfondita .

Nei miei test, ffprobeimpiega 0,3 secondi e mediainfoimpiega 0,09 secondi.


Questo dà risultati strani ... come 2679600 ... meglio usare mediainfo --Inform="Video;%Duration/String%" [inputfile]... che ti darebbe qualcosa di simile 43 min 50s
Robert Riedl,

5

Puoi provare a usare il comando avconv ..

Innanzitutto è necessario installare:

Installa tramite il centro software

se digiti il ​​comando con il flag -i, otterrai informazioni sul video:

avconv -i test.mp4

Nell'output c'è un campo chiamato Durata

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

Ora puoi usare il comando per ottenere solo il valore del campo Durata

Genere:

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

Nel mio caso il risultato è:

00:58:28.05

58 minuti e 28,05 secondi.

Spero che questo sia utile!


1
Questo può anche essere usato con avprobe- non è necessario per -i, ma altrimenti funziona esattamente allo stesso modo. O ffprobeper la risposta di @ per.
evilsoup,

4

exiftool(originariamente destinato alla lettura dei metadati della fotocamera da file di immagini, ma successivamente espanso per leggere e scrivere metadati da quasi tutti i tipi di file multimediali) è molto comodo da usare per questo. Eseguilo con:

exiftool FILE.mp4 | grep Duration

Probabilmente dovrai exiftoolprima installare , ma questo è facilmente eseguibile con il seguente comando (su Debian e derivati ​​come Ubuntu ecc.):

apt install libimage-exiftool-perl

Naturalmente, questa risposta è solo un'altra alternativa. Molte delle altre risposte sono buone. :)


2

Ancora più semplice:

avprobe file.mp4 -show_format_entry duration

Attualmente ricevo il messaggio "L'opzione 'show_format_entry' è obsoleta, utilizzare invece '-show_entries format = duration'"
Faheem Mitha

1

Aggiungendo alla soluzione pers , questo può essere usato su un'intera directory:

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

può anche essere esteso | sortper avere i file ordinati in base alla loro lunghezza.

puoi aggiungerlo a .bashrco .bash_aliasesper poterlo fare lsvlength | sortsu una directory

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

ffprobeè una soluzione più elegante della ffmpegquale genera un errore se non viene indicato il percorso di output.

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

0

Se vuoi vedere la durata di alcuni video in una directory, puoi usare il seguente comando

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


1
Non c'è bisogno di usare grepe così via. Semplicemente exiftool -T -Duration *.mkv(o qualunque modello di file)
PerlDuck

0

Come puoi vedere, ci sono molti modi per farlo. ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONdove mediafile è il nome del file, fornirà un output simile al seguente. Il primo è la durata del primo flusso (in genere video) e il secondo fornisce la durata del secondo flusso (in genere audio)

  DURATION        : 00:21:40.132000000
  DURATION        : 00:21:40.062000000
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.