获取多个视频文件的时长?

时间:2018-11-04 19:20:45

标签: python windows ffmpeg ffprobe

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

我需要从总共多达数千个视频中提取数据。在Windows中,当在资源管理器中选择文件并进入详细信息时,我可以手动查看许多文件的总持续时间。对于1500 mp4文件,大约需要20秒才能进行计算并查看总时间。与使用FFprobe进行迭代时得到的速度相比,它要快得多。

How fast I am currently getting the result with 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 :(得分:1)

我使用mutagen模块解决了该问题,因为它可以非常快速地处理文件。

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

答案 1 :(得分:0)

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