Вопрос или проблема
Я ищу кого-то, кто поможет мне создать 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 бит".
Шаги по созданию скрипта
-
Установка
mediainfo
: Убедитесь, что данная утилита установлена на вашем компьютере. На системах на основе Debian, таких как Ubuntu, можно установить ее с помощью команды:sudo apt-get install mediainfo
-
Создание скрипта: Откройте текстовый редактор и создайте новый файл, например,
check_audio.sh
. -
Написание кода: Откройте файл и вставьте следующий код:
#!/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
Заключение
Создав этот скрипт, вы сможете легко находить и идентифицировать аудиофайлы, которые не соответствуют вашим предпочтениям по параметрам и, в дальнейшем, производить с ними необходимые действия. Убедитесь, что у вас установлена программное обеспечение, нужное для работы с метаданными, чтобы улучшить качество вашей аудиобиблиотеки.
Вы можете адаптировать этот скрипт под другие форматы или параметры в соответствии с вашими нуждами.