Получить длительность из нескольких видеофайлов? - PullRequest
0 голосов
/ 04 ноября 2018

Я хочу извлечь метаданные длительности видео из каждого видеофайла в указанном каталоге, а затем просмотреть общую длительность.

Мне нужно извлечь данные из тысяч видео в целом. В Windows я могу просмотреть общую длительность для многих файлов вручную, выбрав их в проводнике и углубившись в детали. Для 1500 файлов mp4 требуется около 20 секунд, чтобы выполнить вычисления и просмотреть общее время. Это относительно намного быстрее, чем то, что я сейчас получаю, когда перебираю с FFprobe.

Как быстро я получаю результат с помощью FFprobe.

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

Какой самый быстрый способ сделать это?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Я решил проблему с модулем mutagen, поскольку он довольно быстро обрабатывает файлы.

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

0 голосов
/ 05 ноября 2018

Не существует «лучшего» способа, просто лучший способ для вашего варианта использования. У os.stat его нет, потому что продолжительность видео не является частью какой-либо файловой системы posix (файловые системы не заботятся о содержимом файла. Какова продолжительность текстового файла? Каково разрешение исполняемого файла? ?) Если вам не нравится ffprobe, попробуйте mediainfo, mp4box или любой другой инструмент, который может читать медиа-файлы.

...