Я видел подобные вещи раньше, но сейчас не могу найти ничего, что мне нужно. Я просто хочу, чтобы он мог использовать заданную структуру каталогов и возвращать общее время воспроизведения всех видеофайлов.
Это должно дать вам общее время в секундах для всех файлов данного типа в вашем текущем рабочем каталоге:
find . -maxdepth 1 -iname '*.mp4' -exec ffprobe -v quiet -of csv=p=0 -show_entries format=duration {} \; | paste -sd+ -| bc
Чтобы сделать это рекурсивно в папке, которая имеет несколько подпапки И, чтобы включить медиа-файлы с различными расширениями (.mp4, .avi, .mkv и т. д.), вы просто удалили аргументы '-maxdepth' и '-iname', поэтому команда будет такой.
find . -exec ffprobe -v quiet -of csv=p=0 -show_entries format=duration {} \; | paste -sd+ -| bc
ffprobe является частью ffmpeg, поэтому все используемые вами носители должны поддерживаться ffmpeg.
Источник оригинальной команды: https://unix.stackexchange.com/questions/170961/get-total-duration-of-video-files-in-a-directory