AudioBo: как iPod привёл меня к созданию собственного конвертера аудиокниг

AudioBo — современный конвертер аудиокниг для Mac. Он преобразует MP3 в M4B — нативный формат аудиокниг для экосистемы Apple. С обложкой, главами и правильными метаданными.

AudioBo: как iPod привёл меня к созданию собственного конвертера аудиокниг
AudioBo — конвертер аудиокниг для Мак

Почти два года назад я начал небольшой цифровой детокс. Не такой прямо радикальный детокс, а-ля «в лес с палаткой», но что-то в этом роде.

Я поменял iPhone на кнопочный телефон, замодил 20-летний iPod Video для музыки, а для чтения нашёл в закромах такой же винтажный Kindle.

Телеграмчик и бесконечные ленты Instagram уехали на дальнюю полку, а вот музыка и книги остались — это как раз то, чему хотелось уделять больше времени.

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

И вот тут начинается моя история боли, которая, как ни странно, связана не с двадцатилетним iPod, а с софтом, с которым мне пришлось иметь дело.

Ну а если вам лень читать подводки, то вот супер короткая версия: я зарелизил новое приложение — конвертер аудиокниг AudioBo.

MP3 против M4B: почему «просто скачать аудиокнигу» — это не про Apple

Если вы когда-нибудь пытались слушать аудиокниги в экосистеме Apple, вы наверняка замечали бесящую особенность: подавляющее большинство аудиокниг в интернете — это просто папка с MP3-файлами. А Apple такое не любит.

В теории всё просто: скачал книгу, импортировал в «Музыку», синхронизировал на iPhone или iPod. Можно слушать.

На практике же книги в виде обычных музыкальных файлов попадают в приложение «Музыка», а не в «Книги» и соответствующий раздел «Аудиокниг». В итоге:

  • книги теряются среди альбомов
  • не запоминают позицию воспроизведения
  • скорее всего не имеют внятных глав
  • книги из одной серии не сортируются в правильном порядке
  • не умеют играть на условных 1.25x

А чтобы аудиокнига работала именно так, как нужно, она должна быть в формате M4B.

Что такого в M4B?

M4B — это единый файл, а не россыпь треков. Он поддерживает главы, корректно сохраняет позицию, появляется в разделе «Книги/Аудиокниги», позволяет менять скорость воспроизведения и правильно сортирует части серии. Всё предсказуемо, нативно и без хаоса.

Apple сделала M4B стандартом аудиокниг для своей экосистемы. Это как EPUB для электронных книг.

Если вы покупаете книги в закрытых приложениях вроде Audible или приложениях издательств, про M4B вам парится не нужно. Но если вы, как я, любите покупать или добывать файлы сами, то без нормального конвертера аудиокниг жить тяжело.

Старый добрый iPod Video и его капризы

Слушать аудиокниги в M4B на iPhone — одно удовольствие. А вот винтажные iPod — устройства с характером.

Все плееры до iPhone-эры не умеют корректно работать с очень длинными файлами: если книга больше 12 часов, они сбрасывают позицию, могут не запоминать главу или вовсе отправлять плеер в ребут. Кроме того, им нужны особые обложки — слишком большая картинка легко вызовет крэш.

Метаданные тоже должны быть прописаны строго, иначе в UI будет неправильная сортировка. Я как-то с этим сталкивался загрузив все части Дюны а потом гуглил в каком порядке это все надо слушать. Хотя я ожидал, что они будут в правильном порядке.

Все это заставило меня начать разбираться, как устроен M4B и как правильно конвертировать аудиокниги для экосистемы Apple.

«Рынок всё решит»? Спойлер: нет

Первая логичная идея — найти существующий конвертер аудиокниг и решить проблему одной кнопкой. Но быстро оказалось: хоть конвертеров и много, они работают препаршиво.

Из бесплатно доступного — консольные инструменты вроде ffmpeg и mp4v2, которые подходят только тем, кто не боится терминала. Или старые GUI-приложения с интерфейсами времён Tiger, в которых половина настроек не имеет никакого смысла. Ну и отдельная категория — однодневки, у которых UI напоминает смесь Windows XP с Linux. Такие я даже не стал пробовать.

Мне же хотелось простую вещь: взять MP3-папку → через пару минут получить аккуратную, правильную M4B-книгу, которая открывается на всех устройствах и выглядит хорошо. И чтоб это было с современном UI/UX.

Дополнительный контекст: я люблю не просто слушать книги — я люблю хомячить в коллекции.

Мне важно, чтобы у книги был нормальный тайтл, аккуратная обложка, прописанная серия и номер в серии. Чтобы части Гарри Поттера выстраивались по частям, а не по алфавиту. Чтобы в любом приложении все выглядело аккуратно и предсказуемо.

Ни одно из существующих приложений для Mac так делать не умело, потому я решил что хватит страдать, надо самому делать нормальный конвертер.

Эволюция AudioBo

Сначала AudioBo даже не задумывался как «продукт». Это был набор скриптов, с которым я экспериментировал, чтобы разобраться с M4B и добиться корректной работы на iPod. Но за три месяца экспериментов и мучений с командной строкой у меня получилось идеальное решение с простой идеей:

  1. Пусть программа сама разбирается в кодеках, битрейтах, форматах и подбирать оптимальные настройки.
  2. Пользователю достаточно выбрать пресет и запустить Сборку.

Так появился конвертер аудиокниг AudioBo. И вот какие задачи он решает:

Задача №1: спрятать матчасть от обычного пользователя

Первое, что бесит в других утилитах, — обилие технических параметров в которых не все разбираться и не все хотят разбираться.

Минутка духоты: вы знаете, что файл CBR 128 kbps в AAC‑LC при переходе от стерео к моно не уменьшится в размере? Это потому что 128 kbps stereo — это на самом деле два канала по 64 kbps. Поэтому при переходе в моно нужно сбрасывать битрейт до 64 kbps. Но 99% пользователей подумают, что это мало, и оставят 128 kbps, что только ухудшит качество сохранив тот же размер.

Проблема всех утилит в том, что они пускают человека бесконтрольно тыкать в эти порции, что в итоге очень часто лишь раздувает книгу по объёму, часто ухудшая качество.

AudioBo решает это за пользователя. Конвертер анализирует исходный материал, определяет его реальные параметры и предлагает несколько понятных пресетов.

В большинстве случаев достаточно выбрать Высокое качество — и вы получите корректную M4B‑книгу.

Пример работы пресетов и ручной настройки.

Для тех, кто хочет тонко настраивать кодеки, есть таб Кастом, где можно покопаться в параметрах. НО! AudioBo никогда не даст выбрать то, что бессмысленно для ваших входных файлов. По этой причине кейс с завышенным битрейтом, который я описывал выше, тут не пройдёт.

Задача №2: привести главы в порядок

Те, кто скачивал аудиокниги в MP3, знают это чувство: «track_007», «chapter_final_mix_fix2», «disk2_13».
Иногда одна глава разбита на десять файлов. Особенно этим грешат условно старые книги, которые делали лет 10–15 назад.

В AudioBo я сделал всё, чего мне лично не хватало: можно переименовывать главы по шаблону, очищать их от мусора, объединять мелкие файлы в одну главу и править всё прямо в интерфейсе перед экспортом.

Вот пример того, как можно быстро преобразовать непутёвую книгу в приличный вид при помощи функций объединения, групповой очистки и переименования.

Отдельный кайф — модуль групповой очистки и переименования файлов. С ним можно в один клик вычистить из глав нумерацию, фразы вроде “Часть 1” и т.п. А потом сделать свою нумерацию.

Еще одно демо того, как можно быстро оформить аудиокнигу из кучи загруженных видео с YouTube. Тут я чищу названия глав от КАПСЛОКА и двойных пробелов.

Для кириллицы я прикрутил исправление кодировки. Как оказалось, многие «старые» доступные в интернете книги отображаются кракозябрами, и ни одна программа, которую я пробовал, не смогла их прочитать. Для AudioBo это не проблема.

Задача №3: правильные метаданные

От правильных метаданных книг зависит то как книга будет отображаться в плечах. Многие конвертеры тут тоже сыпятся, например не умея правильно кодировать серии. По этому метаданным в AudioBo уделил много времени.

AudioBo записывает только те метатеги, которые действительно важны: название, автор, чтец, год, обложка, серия и номер в серии, а также несколько дополнительных полей. Для коллекций это критично. Гарри Поттер, Дюна, Властитель колец — всё это выводится в правильном порядке.

AudioBo читает и пишет главы в форматах QuickTime и Nero. Последний нужен для того чтобы книга корректно читалась вне экосистемы Apple.

На практике это означает, что книга откроется и поведёт себя одинаково корректно на всех устройствах, которые умеют работать с M4B: от iPod Shuffle до VLC на Google TV.

Сам M4B-контейнер сделан правильно, по всем стандартам, а не так, как у других программ, которые просто переименовывают M4A-файл в M4B.

Задача №4: поддержка винтажных iPod

Это моя любимая фишка, с которой всё началось. Дело в том, что старые iPod не любят книги длиною более 12 часов. Типичный баг — ребуты и потеря места воспроизведения.

Поэтому для iPod я сделал отдельный режим: если книга более 12 часов, AudioBo аккуратно разобьёт её на части примерно по 8 часов. Причём разбиение делается по главам, а не просто по времени.

Благодаря правильным метаданным Apple Books соберёт все части обратно в одну книгу. А на iPod каждая часть воспроизведётся без проблем и в правильном порядке.

При выборе пресета "Винтажные iPod" AudioBo выставляет оптимальные настройки в зависимости от исходного материала. Например, если книга длиннее 12 часов, то автоматически включается разделение на несколько частей. Качество обложки поддерживается до 600 пикселей, а возможность выбрать HE-AAC кодек отключается.

Задача №5: без лишнего перекодирования

Во других приложениях даже изменение обложки или названия заставляет перекодировать всю книгу заново. А каждое проектирование ухудшает качество книги. Я уже не говорю про необходимости ждать долгий экспорт.

А это частый юзкейс, например, когда у вас уже есть аудиокнига и вам надо её немного поправить: заменить обложку, переименовать пару глав.

Так вот, если вы не будете менять аудионастройки, то AudioBo лишь обновит метаданные без перекодирования. Это происходит очень быстро и без лишних потерь качества.

Задача №6: без ограничений на длину книг

Удивительно странная фишка — другой популярный конвертер, которым я пользовался, наотрез отказывался делать книги длиннее 13 часов и всегда дробил их на части. Хотя на современных устройствах в этом вообще нет никакого смысла.

Вот пример из моих юзкейсов: я часто беру и скачиваю с YouTube разные лекции или подкасты для прослушивания офлайн. И чтобы всё было аккуратно и с запоминанием позиции, конвертирую их через AudioBo в длинные сборники, а потом закидываю на телефон для офлайн‑прослушивания. 60-80-100 часов аудио в M4B это совершенно нормально.

Конвертирую очередные лекции длиной 56 часов.

Приятные мелочи

AudioBo не задумывался как плеер, но в процессе разработки стал обрастать соответствующими функциями.

Тут есть автоматическое переключение между играющими главами, перемотка на 10 с вперед/назад, регулировка скорости.

В нём пока ещё нет прогресс-бара для быстрой регулировки позиции, и это — единственное, что осталось прикрутить. Так что в ближайшем будущем полноценный плеер тоже появится.

В AudioBo уже есть зачатки плеера аудиокниг. В ближайшем будущем я собираюсь сделать из него полноценный плеер.

В качестве источника он может принимать не только классику в виде MP3, M4A, FLAC, но и всякую дичь вроде APE, OGG, WMA и прочие файлы. В общем все форматы аудиокниг, на которые богат интернет.

И ещё важная фишечка — он умеет исправлять битые кириллические кодировки, чего не умеют зарубежные аналоги.

Где качнуть AudioBo?

AudioBo уже несколько недель живёт в App Store. И я даже успел выкатить много интересных дополнений на основании фидбэка пользователей.

Лично я очень доволен тем, что получилось. Выглядит нативно. Просто. Современно. Работает очень быстро.

Программа — one-time purchase. Купил и забыл. Стоит $9.99. Налетайте! Покупки и отзывы помогут в дальнейшем развитии 🫰🏻 Ибо в планах у меня есть несколько толковых идей, которые пока ещё никто не реализовал.