使用yt-dlp,透過ffmpeg的ffprobe判斷音訊檔案並移動到不同目錄的shell腳本

2 min

language: ja bn en es hi pt ru zh-cn zh-tw

ffprobe.png

您好,我是無能。

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

Related Posts