我想从指定目录中的每个视频文件中提取视频时长元数据,然后查看总时长。
我需要从总共多达数千个视频中提取数据。在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")]))
最快的方法是什么?
答案 0 :(得分:1)
我使用mutagen
模块解决了该问题,因为它可以非常快速地处理文件。
mp4 = mutagen.mp4.MP4(filename)
duration+=mp4.info.length
答案 1 :(得分:0)
没有“最佳”方法,只是针对您的用例的最佳方法。 os.stat没有它,因为视频持续时间不是任何posix文件系统的一部分,(文件系统不在乎文件的内容,文本文件的持续时间是多少?可执行文件的分辨率是多少? ?)如果您不喜欢ffprobe,请尝试使用mediainfo或mp4box或任何其他可以读取媒体文件的工具。