如何用递归查找ffprobe
所有低质量视频(例如 240p 和 480p)?我更喜欢命令行解决方案。
在 iPhone 和克隆产品出现之前,我已经录制了视频。它们似乎有一个共同点,就是240p
和480p
。我现在想找到它们并手动删除其中的大部分。除了分辨率之外,您是否推荐使用其他元数据来查找非常旧的视频?
答案1
就是这样。以下脚本运行速度惊人,它处理位于 138 个目录中的 363 个文件大约需要 14 秒。
#!/bin/bash
[[ -z ${1+x} ]] && qlty="480" || qlty="$1"
[[ -z ${2+x} ]] && extn="mp4" || type="$2"
[[ -z ${3+x} ]] && baseDir="" || baseDir="${3}/"
shopt -s globstar
for file in ${baseDir}**/*${extn};
do
ffprobe -v error -select_streams v:0 -show_entries stream=width,height \
-of csv=s=x:p=0 "$file" 2>/dev/null | \
awk -F'x' '$2 <= q {printf "%10s\t%s\n", $0, file}' file="$file" q="$qlty"
# For exact match of the quality change <= to ==
done
复制上述脚本并将其粘贴为属于您的可执行文件的内容$PATH
,然后将其用作 shell 命令。假设文件的名称是find-lq-videos.sh
,您具有 root 权限并且nano
是您最喜欢的编辑器,因此您可以使用以下命令来执行此操作。
sudo touch /usr/local/bin/find-lq-videos.sh
sudo chmod +x /usr/local/bin/find-lq-videos.sh
sudo nano /usr/local/bin/find-lq-videos.sh
然后进入视频所在的父目录并输入find-lq-videos.sh
。默认情况下,它将搜索mp4
宽度小于或等于 的文件480
。以下是示例输出:
spas@desk:/mnt/Videos/Doc.and.Conspiracy$ find-lq-videos.sh
720x400 The.Brussels.Business.2012/The.Brussels.Business (2012).mp4
854x480 HyperNormalisation.2016/HyperNormalisation (2016).mp4
该脚本接受三个参数。以下是如何搜索mkv
<= 320
:
spas@desk:/mnt/Videos/Doc.and.Conspiracy$ find-lq-videos.sh 320 mkv
720x304 Inside.Job.2010/Inside.Job.2010.BG.EN.sub.mkv
第三个参数是如果不是当前目录的话的基本路径。下面是如何在ffprobe
另一个目录中搜索所有被接受的文件:
spas@desk:~$ find-lq-videos.sh 320 '*' /mnt/Videos/Science
285x300 /mnt/Videos/Science/Free.Energy.The.Race.to.Zero.Point.1997.Cover.jpg
326x240 /mnt/Videos/Science/Free.Energy.The.Race.to.Zero.Point.1997.sub.mkv
320x240 /mnt/Videos/Science/Sugar.The.Bitter.Truth.2009.sub.mkv
参考: