Obtener la duración de varios archivos de vídeo?

Quiero extraer los metadatos de la duración del video de cada archivo de video en un directorio específico y luego ver la duración total.

Necesito extraer los datos de miles de videos en general. En Windows puedo ver manualmente la duración total de muchos archivos cuando los selecciono en el explorador y entro en detalles. Para archivos de 1500 mp4, se necesitan aproximadamente 20 segundos para realizar los cálculos y ver el tiempo total. Es relativamente mucho más rápido de lo que estoy obteniendo actualmente cuando estoy iterando con FFprobe .

Qué tan rápido estoy obteniendo el resultado con FFprobe.

 for filename in dirFiles: print(subprocess.check_output(['ffprobe', '-i', filename, '-show_entries','format=duration', '-sexagesimal' ,'-v', 'quiet', '-of', 'csv=%s' % ("p=0")])) 

¿Cuál es la forma más rápida de hacer esto?

Resolví el problema con el módulo mutagen , ya que maneja archivos bastante rápido.

mp4 = mutagen.mp4.MP4(filename) duration+=mp4.info.length

No hay una “mejor” forma, solo una mejor manera para su caso de uso. os.stat no lo tiene porque la duración del video no forma parte de ningún sistema de archivos posix (a los sistemas de archivos no les importa el contenido de un archivo. ¿Cuál es la duración de un archivo de texto? ¿Cuál es la resolución de un ejecutable?) ?) Si no te gusta ffprobe, prueba mediainfo, o mp4box, o cualquier otra herramienta que pueda leer archivos multimedia.