是否有可能批量搜索文件夹中 1080p 以下的电影并仅打印出这些电影的结果?
答案1
该mediainfo
程序可以提供视频大小信息
sudo apt install mediainfo
对于 1080p 高度尺寸必须为 1080
显示视频高度与 mediainfo
mediainfo --Output='Video;%%Height%' /path/to/video-file.mkv
现在让我们批量查找 1080p 以下的视频文件
#!/bin/bash
# Working Dir SETTINGS, Adapt to your needs
MFolder=~/Video
# script may be modified to be passed as parameter
# Files list: find Video files and output filename
# find $MFolder -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p' | sort
# Will loop an array. Could run a read while
# Save IFS
OLDIFS=$IFS
IFS=$'\n'
# Find all VIDEO files and store names into an array
fileArray=($(find $MFolder -type f -exec file -N -i -- {} + | sed -n 's!: video/[^:]*$!!p' | sort))
# Restore IFS
IFS=$OLDIFS
# Length of array: total num of found videos
NbTotal=${#fileArray[@]}
# Cosmetic
bold=$(tput bold)
normal=$(tput sgr0)
# The loop
for (( i=0; i<${NbTotal}; i++ ));
do
VidHeight=$(mediainfo --Output='Video;%Height%' "${fileArray[$i]}")
if [ "$VidHeight" -lt 1080 ]; then
((NbUnder1080++))
echo "${fileArray[$i]} "${bold}$(mediainfo --Output='Video;%Width% x %Height%' "${fileArray[$i]}")${normal}
fi
done
# Output report
echo "---"
echo "Folder scanned: $MFolder"
echo "$NbTotal Videos found"
echo "$NbUnder1080 are under 1080p"
答案2
是的,但我不确定是否有比编写一个脚本更简单的方法,该脚本单独提取视频分辨率,然后筛选出您不想看到的分辨率......这不是一个完整的解决方案,但可能会让您开始:
for i in *.mp4
do
RESOLUTION=$(ffmpeg -i $i 2>&1 | grep 'Stream.*:Video' | ....)
if [ $RESOLUTION smaller than 1080p ]
then
echo $i
fi
done
“...”需要一些“sed”或“awk”来提取正确的分辨率信息 - 我有一个脚本可以完成这一任务,但具体到我正在处理的文件类型,因此不会一概而论。然后,一旦您获得了分辨率数据,您就必须想出一种方法来比较它并确定它是否与 1080p 匹配 - 是否“足够好”的比较只查看 X 或 Y 分辨率,或者您是否需要同时考虑 X 和 Y。