¿Cómo verificar cuánto tiempo un video (mp4) usa el shell?
16
Necesito cargar ftp todos los archivos mp4 en un directorio con duración> 4 minutos usando el shell. No puedo encontrar ningún script para verificar cuánto dura un video. ¿Alguien tiene alguna idea de cómo hacer eso?
Esto da resultados extraños ... como 2679600 ... mejor usar mediainfo --Inform="Video;%Duration/String%" [inputfile]... lo que te daría algo ike 43 min 50s
Robert Riedl
5
Puede intentar usar el comando avconv .
Primero debes instalar:
si escribe el comando con la bandera -i, obtendrá información sobre el video:
avconv -i test.mp4
En la salida hay un campo llamado Duración
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
Ahora puede usar el comando para obtener solo el valor del campo Duración
Esto también se puede usar con avprobe: no es necesario -i, pero de lo contrario funciona exactamente de la misma manera. O ffprobepara la respuesta de @ per.
evilsoup
4
exiftool(originalmente destinado a leer metadatos de cámara de archivos de imagen, pero luego se expandió para leer y escribir metadatos de casi cualquier tipo de archivo multimedia) es muy conveniente de usar para esto. Ejecútalo con:
exiftool FILE.mp4 | grep Duration
Probablemente necesite instalar exiftoolprimero, pero esto se hace fácilmente con el siguiente comando (en Debian y derivados como Ubuntu, etc.):
apt install libimage-exiftool-perl
Por supuesto, esta respuesta es solo otra alternativa. Muchas de las otras respuestas también son buenas. :)
No es necesario usar grepy tal. Simplemente exiftool -T -Duration *.mkv(o cualquier patrón de archivo)
PerlDuck
0
Como puede ver, hay numerosas formas de lograr esto.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATIONdonde mediafile es el nombre del archivo, proporcionará una salida similar a la siguiente. El primero es la duración de la primera transmisión (típicamente video) y el segundo proporciona la duración de la segunda transmisión (generalmente audio)
Respuestas:
Esto te dará la duración de un video.
fuente
Mediainfo es una herramienta rápida para este propósito:
Puede encontrar más opciones en una respuesta más completa .
En mis pruebas,
ffprobe
toma 0.3 segundos ymediainfo
toma 0.09 segundos.fuente
mediainfo --Inform="Video;%Duration/String%" [inputfile]
... lo que te daría algo ike 43 min 50sPuede intentar usar el comando avconv .
Primero debes instalar:
si escribe el comando con la bandera -i, obtendrá información sobre el video:
avconv -i test.mp4
En la salida hay un campo llamado Duración
Ahora puede usar el comando para obtener solo el valor del campo Duración
Tipo:
En mi caso el resultado es:
58 minutos y 28.05 segundos.
Espero que esto sea útil!
fuente
avprobe
: no es necesario-i
, pero de lo contrario funciona exactamente de la misma manera. Offprobe
para la respuesta de @ per.exiftool
(originalmente destinado a leer metadatos de cámara de archivos de imagen, pero luego se expandió para leer y escribir metadatos de casi cualquier tipo de archivo multimedia) es muy conveniente de usar para esto. Ejecútalo con:Probablemente necesite instalar
exiftool
primero, pero esto se hace fácilmente con el siguiente comando (en Debian y derivados como Ubuntu, etc.):Por supuesto, esta respuesta es solo otra alternativa. Muchas de las otras respuestas también son buenas. :)
fuente
Aún más simple:
fuente
Agregando a la solución pers , esto se puede usar en un directorio completo:
incluso puede ampliarse
| sort
para ordenar los archivos por su longitud.puede agregar esto
.bashrc
o.bash_aliases
para poder hacerlolsvlength | sort
en un directoriofuente
ffprobe
es una solución más elegante que laffmpeg
que arroja un error si no se le da la ruta de salida.fuente
Si desea ver la duración de algunos videos en un directorio, puede usar el siguiente comando
fuente
grep
y tal. Simplementeexiftool -T -Duration *.mkv
(o cualquier patrón de archivo)Como puede ver, hay numerosas formas de lograr esto.
ffprobe mediafile -show_entries format=format=duration 2>&1 | grep DURATION
donde mediafile es el nombre del archivo, proporcionará una salida similar a la siguiente. El primero es la duración de la primera transmisión (típicamente video) y el segundo proporciona la duración de la segunda transmisión (generalmente audio)fuente