一个文件夹中有 10 个视频文件,如何获取它们的总时长?顺便说一句,我试过 ( Command++ Control) I,但它没有显示总时长。
答案1
您还可以打开甚高频液晶。它会自动播放视频,但按下左下角的停止按钮(方形符号),它会显示播放列表。播放列表顶部将显示总时长。如果您启用正确的列(右键单击列标题并选中相应的框),它还会显示各个文件的名称、文件大小和时长。
此外,VLC 是一款功能齐全的视频播放器,支持您遇到的所有格式,甚至更多。它也是跨平台的(适用于 Linux 和 Windows)。
答案2
似乎最好的解决方案是安装播放器在 Mac OS X 中,然后运行命令行 Bash 脚本(例如此处显示的脚本):
find . -type f -name "*.avi" -print0 | xargs -0 mplayer -vo dummy -ao dummy -identify 2>/dev/null | perl -nle '/ID_LENGTH=([0-9\.]+)/ && ($t +=$1) && printf "%02d:%02d:%02d\n",$t/3600,$t/60%60,$t%60' | tail -n 1
正如用户“syssyphus”所述:
将 *.avi 更改为您想要匹配的任何内容,如果您想检查所有文件,您可以将其完全删除。
答案3
使用Python脚本解决了这个问题。
# -*- coding: utf-8 -*-
"""
pip install --upgrade setuptools
pip install moviepy
usage:
python compute_duration.py --path ~/Movies/ --type .mp4
"""
import os
import datetime
import argparse
from moviepy.editor import VideoFileClip
def main():
parser = argparse.ArgumentParser(
description='Compute Total Time of a Series of Videos')
parser.add_argument("--path", metavar="PATH", default=".",
help="the root path of the videos(default: .)")
parser.add_argument("--type", metavar="TYPE", default=".mkv",
help="the type of the videos(default: .mkv)")
args = parser.parse_args()
filelist = []
for a, b, c in os.walk(args.path):
for name in c:
fname = os.path.join(a, name)
if fname.endswith(args.type):
filelist.append(fname)
ftime = 0.0
for file in sorted(filelist):
clip = VideoFileClip(file)
print("{}: {}".format(file, clip.duration))
ftime += clip.duration
print("%d seconds: " % ftime, str(datetime.timedelta(seconds=ftime)))
if __name__ == "__main__":
main()