递归查找(使用 ffprobe)所有低质量视频(240p 和 480p)

递归查找(使用 ffprobe)所有低质量视频(240p 和 480p)

如何用递归查找ffprobe所有低质量视频(例如 240p 和 480p)?我更喜欢命令行解决方案。

在 iPhone 和克隆产品出现之前,我已经录制了视频。它们似乎有一个共同点,就是240p480p。我现在想找到它们并手动删除其中的大部分。除了分辨率之外,您是否推荐使用其他元数据来查找非常旧的视频?

答案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

参考:

相关内容