Esta pregunta ya tiene una respuesta aquí:
- ¿Grep equivalente para Windows 7? 13 respuestas
Cada respuesta que encontré para obtener la duración de un video con ffmpeg contiene grep
, cual cmd
no tiene nativamente
Sé que hay una cosa "Grep para Windows", pero prefiero usar una función que viene con la línea de comandos.
Así que cuando lo hago ffmpeg -i input
yo obtengo
Input #0, flv, from 'vid_test001.flv':
Metadata:
creationdate : Fri Sep 19 15:58:17
Duration: 00:00:12.44, start: 0.000000, bitrate: 806 kb/s
Stream #0:0: Video: flv1, yuv420p, 320x240, 1k tbr, 1k tbn, 1k tbc
Stream #0:1: Audio: nellymoser, 22050 Hz, mono, flt
Me gustaría obtener la Duración de esto, que es "00: 00: 12.44" en este caso
command-line
ffmpeg
Houseman
fuente
fuente
Respuestas:
Ejecutar
ffmpeg
en el archivo de entrada, envía la salida de stderr (donde ffmpeg escribe su información de manera predeterminada) a la salida estándar. Filtrar la lista confindstr
para recuperar las líneas que comienzan con espacios seguidos deDuration:
. Para cada línea encontrada, los espacios y las comas se consideran delimitadores de campo y se solicita el segundo token de la línea, es decir, el tiempo después deDuration:
etiqueta. Este valor se recupera en elfor
parámetro reemplazable%a
que se hace eco a la consola.Para utilizar desde el archivo por lotes, escapar signos de porcentaje, reemplazando
%
con%%
fuente
Si no se opone al uso de Powershell (viene de serie en versiones recientes de Windows), puede hacer uso del
Select-String
mando.Aquí hay una gran publicación de otra pregunta de Superusuario: enlazar
Básicamente, puede tomar la salida del comando y canalizar los resultados a cadena de selección.
fuente