Lista de archivos multimedia con su duración.

2

Quería obtener una lista de archivos mp4 y su duración correspondiente de todas las carpetas que coinciden con el patrón a continuación

por ejemplo: LO1 / LO1.MP4, LO3 / LO3.MP4

Intenté seguir pero recibo varias entradas y no puedo entender el nombre de archivo:

$ mediainfo /var/www/videos/L*/L*.mp4 | grep Duración
Duración: 25mn 54s
Duración: 25mn 54s
Duración del material: 1554665
Duración: 25mn 54s
Duración del material: 1554688
Duración: 37mn 21s
Duración: 37mn 21s
Duración del material: 2241664
Duración: 37mn 21s
Duración del material: 2241696
Duración: 26mn 6s
Duración: 26mn 6s
Duración: 26mn 6s
Duración: 30mn 41s
Duración: 30mn 41s
Duración: 30mn 41s
Duración: 39mn 41s
Duración: 39mn 41s
Duración: 39mn 41s
Duration_LastFrame: -7ms
Duración: 37mn 2s
Duración: 37mn 2s
Duración: 37mn 2s
Duration_LastFrame: -12ms
Duración: 34mn 24s
Duración: 34mn 24s
Duración: 34mn 24s
Duración: 31mn 7s
Duración: 31mn 7s
Duración: 31mn 7s
Duración: 31mn 57s
Duración: 31mn 57s
Duración: 31mn 57s
Duración: 29mn 30s
Duración: 29mn 30s
Duración: 29mn 30s
Duración: 36mn 28s
Duración: 36mn 28s
Duración: 36mn 27s
Duración del material: 2187988

Entonces, ¿cómo puedo obtener una lista de nombres de archivo (.mp4) y su duración correspondiente?

suuser
fuente

Respuestas:

5

No conozco el resultado de mediainfo, pero así es como lo hago usando ffrobe (o ffmpeg -i) esto obtendrá la duración

ffprobe $fn 2>&1|grep Duration|sed -e 's/^[ \t]*//'|cut -d" " -f2|cut -d. -f1

usando find obtendrá los nombres de archivo para usted

find /var/www/videos/L* -type f -name L\*.mp4

para que puedas juntar todo en un pequeño bucle for para obtener tu lista

for fn in `find /var/www/videos/L* -type f -name L\*.mp4`;
do
    dur=`ffprobe $fn 2>&1|grep Duration|sed -e 's/^[ \t]*//'|cut -d" " -f2|cut -d. -f1`
    echo "$fn $dur"
done
Cwissy
fuente
1
Prefiero el -execindicador de búsqueda para este tipo de tarea porque guardan muchos tenedores de proceso: find [filter rules] -exec mediainfo \{\} + | grep [filter]o si no tiene GNU find find [filter rules] -print0 | xargs -0 mediainfo | grep [filter].
David Foerster