Возникла необходимость уменьшения размера аудиокниг. Как правило, аудиокниги распространяются в формате mp3 с битрейтом 128 и более. Вследствие этого зачастую одно произведение может достигать размеров в среднем 500-600 Мб.
Экспериментальным образом выяснено, что если такие произведения преобразовать с формат ogg с битрейтом 16, который мне показался вполне достаточным для нормального прослушивания речи, то можно получить выигрыш в размерах произведений в несколько раз. Строго фиксированное значение указать сложно, но в среднем оно у меня достигало величин в 6-10, а то и более раз. В частности, конвертация 50-минутного произведения Альфреда Бестера "Кто-то там наверху меня любит", представленного исходным файлом mp3 128 кбит/с размером в 120 Мб позволила получить на выходе вполне комфортно воспринимаемый на слух файл ogg размером в 6,5 Мб.
Для преобразования вам понадобится пакет ffmpeg, который можно установить командой sudo apt install -y ffmpeg
Сама команда для преобразования имеет вид:
ffmpeg -i file.mp3 -b:a 16k -acodec libopus file.ogg
На первых порах через особое действие в правом контекстном меню оболочки XFCE она мной использовалась как действие для каждого файла с выводом уведомления о том, что файл ogg готов:
ffmpeg -i %f -b:a 16k -acodec libopus %f.ogg && zenity --width=130 --height=50 --info --text "\nogg ready" 2>/dev/null
Однако неудобство заключалось в том, что результирующие файлы имели расширение mp3.ogg, что приводило к необходимости переименования их расширения в ogg вручную, а также то, что исходные файлы mp3 также приходилоcь удалять вручную.
После мучительных поисков решения родился следующий сценарий, в ходе которого:
1) указывается папка с файлами mp3, которые необходимо преобразовать;
2) осуществляется поиск в указанной папке файлов mp3 и каждый найденный фал преобразовывается в формат ogg;
3) после преобразования исходные файл mp3 удаляются;
4) расширение файлов mp3.ogg приводится к виду ogg.
Текст сценария:
#!/bin/bash
dir=$(zenity --file-selection --directory)
find "$dir" -name "*.mp3" -exec ffmpeg -i {} -b:a 16k -acodec libopus {}.ogg \;
find "$dir" -name "*.mp3" -exec rm {} \;
find "$dir" -name '*.mp3.ogg' -exec sh -c 'mv "$0" "${0%.mp3.ogg}.ogg"' {} \;
dir=$(zenity --file-selection --directory)
find "$dir" -name "*.mp3" -exec ffmpeg -i {} -b:a 16k -acodec libopus {}.ogg \;
find "$dir" -name "*.mp3" -exec rm {} \;
find "$dir" -name '*.mp3.ogg' -exec sh -c 'mv "$0" "${0%.mp3.ogg}.ogg"' {} \;
В XFCE можно создать значок запуска, присвоив ему какую-либо картинку, например:
и запускать его через команду "Выполнить" правого контекстного меню мыши. Либо для такого сценария sh добавить на панель элемент "Запуск приложений", впоследствии указав в нём путь к файлу sh и отображаемый значок.
В процессе преобразования сценарий может осуществлять преобразование файлов не последовательно, а по ему одному известной 😀 очерёдности, что, впрочем, никак не влияет на функциональность. Ход процесса отображается в окне терминала:
Если sh запускался не по команде в окне терминала, а по кнопке запуска, то после завершения всех процессов окно терминала будет закрыто. В папке с файлами аудиокниги будут присутствовать только файлы ogg.
Комментариев нет:
Отправить комментарий