使用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