Script Shell para Mover Arquivos de Áudio para um Diretório Separado, Identificados por ffprobe do ffmpeg, após Download com yt-dlp

4 min

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

ffprobe.png

Olá, sou um inútil.

Com o yt-dlp, eu baixei e organizei completamente meus vídeos favoritos do YouTube.

No entanto, ao salvar, não incluí uma verificação para music.youtube.com, então tudo está no mesmo diretório.
Dessa forma, músicas e outros conteúdos ficam misturados, tornando a visualização muito difícil, então pensei em uma maneira de separar as pastas.


Assim, não consigo distinguir se é um arquivo de vídeo comum ou um arquivo de música, pois ambos têm a mesma extensão .mp4.
Mesmo que eu tente determinar pelo tamanho do arquivo ou duração, a precisão é muito baixa.

Então, percebi que seria bom determinar pela proporção de aspecto.
Para minha surpresa, o ffmpeg pode determinar a proporção de aspecto, então vou verificar com o seguinte comando:

ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 “arquivo_de_musica.mp4”

> 1080x1080

Então, parece ser um quadrado de 1080 (1080x1080).

Em outras palavras, basta mover os arquivos que retornam esse valor para um diretório separado.
Uau, o ffmpeg é realmente incrível! Ter uma funcionalidade como essa... é impressionante.

Então, escrevi o script shell da seguinte forma:

vi mvfile.sh

#!/bin/bash

# Definir os caminhos dos diretórios
input_dir="/media/aaa"
output_dir="/media/bbb"

# Criar o diretório de saída se não existir
mkdir -p "$output_dir"

# Processar cada arquivo
for file in "$input_dir"/*.mp4; do
# Obter a proporção de aspecto do vídeo usando ffprobe
    ratio=$(ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "$file")

    # Se a proporção de aspecto for 1080x1080, mover o arquivo para o diretório de saída
    if [ "$ratio" == "1080x1080" ]; then
        mv "$file" "$output_dir"
        echo "Moved $file to $output_dir"
    fi
done

Em seguida, concedo permissão de execução.

chmod +x mvfile.sh

E, executar

./mvfile.sh

Se a saída mostrar que os arquivos foram movidos, é um sucesso.
Pode ser uma boa ideia atribuir o script acima como um trabalho cron, especialmente para o diretório usado para salvar arquivos de vídeo.

É tudo por agora.

Até a próxima.

※Aparentemente, há muitas miniaturas ligeiramente desalinhadas, então alterei a detecção de miniaturas para o seguinte:

if [[ "$ratio" == @(10[78][0-9]x10[78][0-9]|7[12][0-9]x7[12][0-9]) ]]; then

Related Posts