Comment vérifier combien de temps une vidéo (mp4) utilise le shell?
16
J'ai besoin de télécharger ftp tous les fichiers mp4 dans un répertoire d'une durée> 4 minutes en utilisant le shell. Je ne trouve aucun script pour vérifier la durée d'une vidéo. Quelqu'un sait-il comment faire cela?
Le format des messages du journal FFmpeg est-il garanti? Sinon, je n'aime pas trop ça - cela pourrait cesser de fonctionner avec n'importe quelle version.
Cela donne des résultats étranges ... comme 2679600 ... mieux à utiliser mediainfo --Inform="Video;%Duration/String%" [inputfile]... qui vous procurerait quelque chose comme 43 min 50s
Robert Riedl
5
Vous pouvez essayer d'utiliser la commande avconv ..
Vous devez d'abord installer:
si vous tapez la commande avec l'indicateur -i, vous obtiendrez des informations sur la vidéo:
avconv -i test.mp4
Dans la sortie, il y a un champ appelé Durée
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
Vous pouvez maintenant utiliser la commande pour obtenir uniquement la valeur du champ Durée
Cela peut également être utilisé avec avprobe- pas besoin de la -i, mais cela fonctionne exactement de la même manière. Ou ffprobepour la réponse de @ per.
evilsoup
4
exiftool(initialement destiné à la lecture des métadonnées de l'appareil photo à partir de fichiers image, mais développé plus tard pour lire et écrire des métadonnées à partir de presque n'importe quel type de fichier multimédia) est très pratique à utiliser pour cela. Exécutez-le avec:
exiftool FILE.mp4 | grep Duration
Vous devrez probablement installer d' exiftoolabord, mais cela se fait facilement avec la commande suivante (sur Debian et les dérivés comme Ubuntu, etc.):
apt install libimage-exiftool-perl
Bien sûr, cette réponse n'est qu'une autre alternative. Beaucoup d'autres réponses sont également bonnes. :)
Pas besoin d'utiliser grepet autres. Tout simplement exiftool -T -Duration *.mkv(ou n'importe quel modèle de fichier)
PerlDuck
0
Comme vous pouvez le voir, il existe de nombreuses façons d'y parvenir.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONoù mediafile est le nom du fichier, fournira une sortie similaire à celle ci-dessous. Le premier étant la durée du premier flux (généralement vidéo) et le second fournissant la durée du second flux (généralement audio)
Réponses:
Cela vous donnera la durée d'une vidéo.
la source
Mediainfo est un outil rapide à cet effet:
Vous pouvez trouver plus d'options dans une réponse plus approfondie .
Dans mes tests,
ffprobe
prend 0,3 seconde etmediainfo
0,09 seconde.la source
mediainfo --Inform="Video;%Duration/String%" [inputfile]
... qui vous procurerait quelque chose comme 43 min 50sVous pouvez essayer d'utiliser la commande avconv ..
Vous devez d'abord installer:
si vous tapez la commande avec l'indicateur -i, vous obtiendrez des informations sur la vidéo:
avconv -i test.mp4
Dans la sortie, il y a un champ appelé Durée
Vous pouvez maintenant utiliser la commande pour obtenir uniquement la valeur du champ Durée
Type:
Dans mon cas, le résultat est:
58 minutes et 28,05 secondes.
J'espère que cela vous sera utile!
la source
avprobe
- pas besoin de la-i
, mais cela fonctionne exactement de la même manière. Ouffprobe
pour la réponse de @ per.exiftool
(initialement destiné à la lecture des métadonnées de l'appareil photo à partir de fichiers image, mais développé plus tard pour lire et écrire des métadonnées à partir de presque n'importe quel type de fichier multimédia) est très pratique à utiliser pour cela. Exécutez-le avec:Vous devrez probablement installer d'
exiftool
abord, mais cela se fait facilement avec la commande suivante (sur Debian et les dérivés comme Ubuntu, etc.):Bien sûr, cette réponse n'est qu'une autre alternative. Beaucoup d'autres réponses sont également bonnes. :)
la source
Encore plus simple:
la source
Ajout à solution pers , cela peut être utilisé sur un répertoire entier:
il peut même être étendu par
| sort
pour trier les fichiers selon leur longueur.vous pouvez l'ajouter à
.bashrc
ou.bash_aliases
pour pouvoir le fairelsvlength | sort
sur un répertoirela source
ffprobe
est une solution plus élégante que celleffmpeg
qui génère une erreur si elle ne reçoit pas le chemin de sortie.la source
Si vous souhaitez voir la durée de certaines vidéos dans un répertoire, vous pouvez utiliser la commande suivante
la source
grep
et autres. Tout simplementexiftool -T -Duration *.mkv
(ou n'importe quel modèle de fichier)Comme vous pouvez le voir, il existe de nombreuses façons d'y parvenir.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
où mediafile est le nom du fichier, fournira une sortie similaire à celle ci-dessous. Le premier étant la durée du premier flux (généralement vidéo) et le second fournissant la durée du second flux (généralement audio)la source