使用yt-dlp,通过ffmpeg的ffprobe检测音频文件并将其移动到单独目录的shell脚本

你好,我是无能。
我使用yt-dlp将我喜欢的YouTube视频完全本地化了。
然而,在保存时我没有加入对music.youtube.com的判断,所以所有文件都保存在同一个目录下。
这样一来,音乐和其他内容混在一起,非常不便查看,所以我想到了一种方法来区分文件夹。
因此,如果普通视频文件和音乐文件都是.mp4扩展名,就无法区分。
即使通过文件大小或时长等来判断,准确性也太低了。
于是,我意识到可以通过宽高比来判断。
令人惊讶的是,ffmpeg可以判断宽高比,因此我将使用以下命令进行确认。
ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 “音楽ファイル.mp4”
> 1080x1080
所以,它似乎是1080的正方形。
也就是说,我只需要将输出这个值的视频文件移动到另一个目录即可。
哇,ffmpeg真是太棒了。竟然还有这样的功能……太厉害了。
那么,我编写的shell脚本如下所示。
vi mvfile.sh
#!/bin/bash
# 设置目录路径
input_dir="/media/aaa"
output_dir="/media/bbb"
# 如果输出目录不存在则创建
mkdir -p "$output_dir"
# 逐文件处理
for file in "$input_dir"/*.mp4; do
# 使用ffprobe获取视频的宽高比
ratio=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "$file")
# 如果宽高比是1080x1080,则将文件移动到输出目录
if [ "$ratio" == "1080x1080" ]; then
mv "$file" "$output_dir"
echo "Moved $file to $output_dir"
fi
done
然后赋予执行权限。
chmod +x mvfile.sh
然后执行。
./mvfile.sh
如果出现文件已移动的输出,则表示成功。
特别是,您也可以将上述脚本作为cron作业应用于用于保存视频文件的目录。
那么。
期待您的再次光临。
※看来,由于许多缩略图略有偏差,我将缩略图判断条件更改为以下内容。
if [[ "$ratio" == @(10[78][0-9]x10[78][0-9]|7[12][0-9]x7[12][0-9]) ]]; then