如何在 Mac OS X 10.10(Yosmite)中获取多个视频文件的时长

如何在 Mac OS X 10.10(Yosmite)中获取多个视频文件的时长

一个文件夹中有 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()

相关内容