0

我想从指定目录中的每个视频文件中提取视频时长元数据,然后查看总时长。

我需要从多达数千个视频中提取数据。在 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")]))

更快的方法是什么?

4

2 回答 2

1

我解决了mutagen模块的问题,因为它处理文件的速度非常快。

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

于 2018-11-17T22:34:54.487 回答
0

没有“最佳”方式,只有适合您的用例的最佳方式。os.stat 没有它,因为视频持续时间不是任何 posix 文件系统的一部分,(文件系统不关心文件的内容,文本文件的持续时间是多少?可执行文件的分辨率是多少?) 如果您不喜欢 ffprobe,请尝试使用 mediainfo、mp4box 或任何其他可以读取媒体文件的工具。

于 2018-11-04T22:49:47.280 回答