Ple*_*elp 8 command-line video scripts
是否有脚本(bash、python 等)输出目录中所有视频文件的总持续时间(递归)?
例如,执行以下操作:
script mypath
Run Code Online (Sandbox Code Playgroud)
它给x minutes/hours.
Syl*_*eau 11
首先安装mediainfo:
sudo apt-get install mediainfo
Run Code Online (Sandbox Code Playgroud)
您现在可以使用以下 oneliner 来获取目录的总视频时间:
find . -type f -exec mediainfo --Inform="General;%Duration%" "{}" \; 2>/dev/null | awk '{s+=$1/1000} END {h=s/3600; s=s%3600; printf "%.2d:%.2d\n", int(h), int(s/60)}'
Run Code Online (Sandbox Code Playgroud)
该find命令将mediainfo递归调用每个文件并以毫秒为单位获取视频持续时间。
然后该awk部分将对这些值求和并以HH:MM格式返回总时间。
更新:avprobe确实比mediainfo(感谢@souravc)快
为了获得更好的结果,请改用下面的命令(您需要sudo apt-get install libav-tools先)
find . -type f -exec avprobe -v quiet -show_format_entry duration "{}" \; | awk '{s+=$1} END {h=s/3600; s=s%3600; printf "%.2d:%.2d\n", int(h), int(s/60)}'
Run Code Online (Sandbox Code Playgroud)
您可以使用以下脚本递归地了解目录中所有视频文件的总持续时间。我avprobe在以下脚本中使用了libav-tools
安装libav-tools为,
sudo apt-get install libav-tools
Run Code Online (Sandbox Code Playgroud)
将脚本另存为get_video_duration.sh(说)。从终端授予它执行权限作为
chmod u+x get_video_duration.sh
Run Code Online (Sandbox Code Playgroud)
如何运行脚本
要知道目录的总视频持续时间/full/path/to/videodir,请使用参数运行
./get_video_duration.sh /full/path/to/videodir
Run Code Online (Sandbox Code Playgroud)
或者要知道当前目录运行的总视频持续时间没有任何参数
./get_video_duration.sh .
Run Code Online (Sandbox Code Playgroud)
对于递归,在目录路径之后添加-Ror-r或-recursiveor --recursive。例如/full/path/to/videodir递归地知道目录的总视频时长(也搜索里面的所有文件夹/full/path/to/videodir)
./get_video_duration.sh /full/path/to/videodir -R
Run Code Online (Sandbox Code Playgroud)
脚本如下:
sudo apt-get install libav-tools
Run Code Online (Sandbox Code Playgroud)
脚本执行的屏幕截图

注意:由于我的主目录中没有任何文件.mkv或.avi文件,因此屏幕截图中的最后两行出现了持续时间 0Hr 0Min 0Sec
| 归档时间: |
|
| 查看次数: |
4081 次 |
| 最近记录: |