Как я могу перечислить файлы с определенной частотой выборки или глубиной бит?

Вопрос или проблема

Я ищу кого-то, кто поможет мне создать bash-скрипт, использующий инструмент mediainfo, чтобы пройтись по всей моей аудиотеке и вывести список .flac файлов, которые не имеют Частоту дискретизации “44.1 кГц” или Глубину битов “16 бит”.

Я попробовал это сделать, но скрипт не работает. Вот какие у меня были мысли.

#!/usr/bin/env sh
mediainfo /media/Media/Music/ 
if grep ["Глубина битов" != "16"] || ["Частота дискретизации" != "44.1 кГц"]
then
    echo "$flacfile"
    echo mediainfo /media/Media/Music/ | grep 'Глубина битов'
    echo mediainfo /media/Media/Music/ | grep 'Частота дискретизации'
else
    # ничего не делать...
fi

В вашем скрипте есть ошибка: вы неправильно используете grep, нет цикла по .flac файлам, mediainfo не сохраняется, и каналы используются неправильно.

С помощью mediainfo вы могли бы сделать что-то вроде этого:

#!/usr/bin/env bash

MUSIC_DIR="/media/Media/Music"

find "$MUSIC_DIR" -type f -iname "*.flac" | while read -r flacfile; do
    bit_depth=$(mediainfo --Output="Audio;%BitDepth%" "$flacfile")
    sample_rate=$(mediainfo --Output="Audio;%SamplingRate_String%" "$flacfile")

    if [ "$bit_depth" != "16" ] || [ "$sample_rate" != "44.1 кГц" ]; then
        echo "Файл: $flacfile"
        echo "Глубина битов: $bit_depth"
        echo "Частота дискретизации: $sample_rate"
        echo
    fi
done

Ответ или решение

Эффективное создание скрипта для фильтрации аудиофайлов по параметрам битности и частоты дискретизации с использованием mediainfo

В данной статье мы рассмотрим, как создать Bash-скрипт для проверки параметров аудиофайлов .flac в папке с музыкой. Мы будем использовать утилиту mediainfo, которая позволяет извлекать метаданные аудиофайлов. Наша задача — вывести список файлов, которые не соответствуют заданным параметрам: частоте дискретизации "44.1 kHz" и битности "16 бит".

Шаги по созданию скрипта

  1. Установка mediainfo: Убедитесь, что данная утилита установлена на вашем компьютере. На системах на основе Debian, таких как Ubuntu, можно установить ее с помощью команды:

    sudo apt-get install mediainfo
  2. Создание скрипта: Откройте текстовый редактор и создайте новый файл, например, check_audio.sh.

  3. Написание кода: Откройте файл и вставьте следующий код:

#!/usr/bin/env bash

MUSIC_DIR="/media/Media/Music"

find "$MUSIC_DIR" -type f -iname "*.flac" | while read -r flacfile; do
    bit_depth=$(mediainfo --Output="Audio;%BitDepth%" "$flacfile")
    sample_rate=$(mediainfo --Output="Audio;%SamplingRate_String%" "$flacfile")

    if [ "$bit_depth" != "16" ] || [ "$sample_rate" != "44.1 kHz" ]; then
        echo "Файл: $flacfile"
        echo "Битность: $bit_depth"
        echo "Частота дискретизации: $sample_rate"
        echo
    fi
done

Пояснение кода

  • Обозначение директории: Измените переменную MUSIC_DIR, если ваша аудиобиблиотека находится в другом месте.
  • Поиск файлов: Команда find ищет все .flac файлы в указанной директории.
  • Чтение параметров: mediainfo извлекает данные о битности и частоте дискретизации.
  • Условия для фильтрации:
    • Если файл не имеет битности "16" или частоты "44.1 kHz", он выводится на экран с соответствующей информацией.

Запуск скрипта

Проверьте, что ваш скрипт доступен для выполнения. Для этого выполните следующую команду:

chmod +x check_audio.sh

Теперь вы можете запустить ваш скрипт:

./check_audio.sh

Заключение

Создав этот скрипт, вы сможете легко находить и идентифицировать аудиофайлы, которые не соответствуют вашим предпочтениям по параметрам и, в дальнейшем, производить с ними необходимые действия. Убедитесь, что у вас установлена программное обеспечение, нужное для работы с метаданными, чтобы улучшить качество вашей аудиобиблиотеки.

Вы можете адаптировать этот скрипт под другие форматы или параметры в соответствии с вашими нуждами.

Оцените материал
Добавить комментарий

Капча загружается...