ТранскрибаторТранскрибатор
Практическая инструкция

Как добавить главы в M4B через FFmpeg и проверить переходы

Файл ffmetadata с названиями и границами глав, команда для AAC/M4A, проверка M4B через ffprobe и контроль переходов в плеере.

03 октября 2026Транскрибатор
Запись + chapters.txtГлава 1 · подготовкаГлава 2 · проверкаОдин файл · два перехода
Проверенные ограниченияРазобранный примерРабочий шаблон
1. РазметкаСверить начала по звукуФинальная версия2. ПереносAAC + ffmetadataНовый файл M4B3. Проверкаffprobe → список главПлеер → нужная речь
Сначала зафиксируйте финальную версию звука. После переноса глав нужны две проверки: данные контейнера и переходы в выбранном плеере.

Определите результат: один файл с навигацией

Главы внутри M4B помогают перейти к разделу длинной аудиозаписи, сохраняя её одним файлом. Это удобно для учебной лекции, записанной инструкции или собственной аудиокниги. Границы и названия являются метаданными: показанный процесс не разрезает звук на отдельные файлы.

Если нужны отметки в описании ролика, используйте порядок подготовки глав YouTube. У платформы свои правила. Здесь другая задача: подготовить главы внутри аудиоконтейнера и убедиться, что ими можно пользоваться в нужном приложении.

Инструкция рассчитана на уже установленный FFmpeg и подготовленный файл sample.m4a с аудиокодеком AAC. Проверьте версию командой ffmpeg -version. Не применяйте копирование потока к любому WAV или MP3 только потому, что выбрали расширение .m4b. Если кодек не подходит контейнеру, сначала отдельно подготовьте совместимую копию и проверьте её звук.

Оставьте оригинал отдельно, а результат назовите sample-with-chapters.m4b. Сразу решите, в каком плеере будете читать оглавление. Наличие глав в файле не гарантирует, что каждое устройство покажет одинаковый интерфейс навигации.

Найдите границы по окончательной версии аудио

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

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

Назовите раздел по тому, что в нём действительно объясняется. «Проверка результата» полезнее «Часть 2», если слушатель ищет проверку. Не делайте главу возле каждого предложения: оглавление должно позволять вернуться к законченной задаче.

ffprobe -v error -show_entries format=duration -of json "sample.m4a"

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

Создайте текстовый файл глав в UTF-8

Сохраните chapters.txt как обычный текст UTF-8. Первая строка — ;FFMETADATA1. Каждая секция [CHAPTER] задаёт одну главу; TIMEBASE=1/1000 означает миллисекунды, START и END — её границы, title — название. При таком масштабе одна минута равна 60000.

Ниже учебная заготовка для ровно двухминутной записи с границей в 01:00. Для собственного файла замените названия и все числа. Нельзя оставлять END=120000, если запись короче двух минут, или считать эти числа универсальными настройками.

;FFMETADATA1
title=Учебная запись

[CHAPTER]
TIMEBASE=1/1000
START=0
END=60000
title=Подготовка записи

[CHAPTER]
TIMEBASE=1/1000
START=60000
END=120000
title=Проверка результата

Если в названиях нужны служебные символы формата — знак равенства, точка с запятой, решётка или обратная косая черта — их требуется экранировать. Для первой пробы используйте простые названия, затем проверьте сложные отдельно. Не сохраняйте файл как документ Word и не подменяйте UTF-8 другой кодировкой.

Верхняя строка title=Учебная запись задаёт общий заголовок. В показанной команде общие метаданные берутся из chapters.txt: прежние теги исходника могут не перейти автоматически. Заранее выпишите нужные сведения и после сохранения проверьте их отдельно. Команда не предназначена для архивного сохранения всех тегов и обложки.

Подключите главы и сохраните новый M4B

Откройте терминал в папке с рабочим аудио и chapters.txt. Используйте новое имя результата. Пути с пробелами заключайте в кавычки. В примере -n запрещает перезапись существующего выходного файла: при таком сообщении выберите другое имя, а не включайте перезапись вслепую.

ffmpeg -hide_banner -n -i "sample.m4a" -f ffmetadata -i "chapters.txt" -map 0:a:0 -map_metadata 1 -map_chapters 1 -c:a copy "sample-with-chapters.m4b"

Первый вход, номер 0, содержит звук; второй, номер 1, — метаданные. -map 0:a:0 выбирает первую аудиодорожку первого входа. -map_metadata 1 берёт общие теги из второго входа, а -map_chapters 1 — главы. -c:a copy переносит выбранный сжатый аудиопоток без нового кодирования.

Эта команда не добавляет другие аудиодорожки, видео или обложку автоматически. Если они нужны, подготовьте отдельную схему переноса и проверьте её. Для этой инструкции достаточно одной подтверждённой AAC-дорожки.

Дождитесь завершения и прочитайте ошибку, если результат не создан. Сообщение о несовместимом кодеке, неверном файле метаданных и уже существующем имени требуют разных действий. Не меняйте сразу несколько параметров: сначала подтвердите формат входа и исправность chapters.txt.

Проверьте метаданные и настоящие переходы

ffprobe -v error -show_chapters -show_entries format=duration -of json "sample-with-chapters.m4b"

Проверьте число глав, их названия, start_time и end_time в секундах, а также длительность результата. Для учебной заготовки ожидаются интервалы 0–60 и 60–120 секунд. Ошибка масштаба времени заметна здесь раньше, чем при попытке прослушать весь материал.

Затем откройте именно сохранённый M4B в выбранном плеере. Найдите оглавление и перейдите к каждой главе: услышанная тема должна соответствовать названию. Проверьте начало и конец аудио, а также место возле каждого перехода. ffprobe подтверждает записанные данные, но не заменяет такую проверку приложения.

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

Сохраните исходник, готовый M4B, chapters.txt и журнал проверки. Для общего порядка хранения используйте архив расшифровок и связанных записей. Связь между текстом, границами и версией аудио важнее похожих имён файлов.

Учебный пример

Учебная техническая проба на двух секундах

Для проверки команды использован синтетический двухсекундный AAC-файл и две главы: «Первая часть» от 0 до 1 секунды и «Вторая часть» от 1 до 2 секунд. FFmpeg 6.1.1 сохранил M4B; ffprobe показал два русских названия и длительность 2 секунды. Хеш сжатых аудиопакетов исходника и результата совпал.

ПроверкаУчебный результатЧто подтвердить на своей записи
Число глав2 главыВсе задуманные разделы сохранены
Границы теста0–1 и 1–2 секундыВремя соответствует финальному монтажу
АудиопотокХеш сжатых пакетов совпалНужная дорожка перенесена и воспроизводится
Переходы в плеереВ этом техническом тесте не проверялисьОглавление видно, переходы открывают нужную речь
Непрерывное аудио · 2 секундыПервая частьВторая часть0 с1 с2 с
Учебная шкала: одна непрерывная запись и две навигационные главы. Граница не является разрезанием файла.

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

Журнал подготовки M4B

Рабочая заготовкаВыделите и скопируйте
Исходник / кодек / длительность:
Финальная версия аудио:
FFmpeg / ffprobe / версии:
Глава / название / начало / конец:
Масштаб времени в chapters.txt:
Кодировка UTF-8:
Общие теги, которые нужно сохранить:
Команда / выходной файл:
Число глав и названия по ffprobe:
Длительность результата:
Плеер / версия / оглавление видно:
Каждый переход проверен по речи:
Начало и конец прослушаны:
Сохранены исходник, M4B, chapters.txt и текст:

Частые вопросы

Можно просто переименовать M4A в M4B?

Переименование не создаёт главы. Их нужно записать в контейнер, затем проверить список и переходы.

Главы создают отдельные аудиофайлы?

В показанном процессе аудио остаётся непрерывным внутри одного результата. Главы добавляют навигационные интервалы.

Почему главы видны в ffprobe, но отсутствуют в плеере?

Возможны ограничения приложения или открытие старой копии. Проверьте поддержку глав M4B и точный файл до изменения метаданных.

После удаления паузы нужно менять главы?

Да, проверьте все границы после изменённого участка по финальному аудио. Список от старой версии может вести к другой реплике.

Копирование потока улучшает звук?

Нет. -c:a copy переносит выбранный аудиопоток без нового кодирования; это не удаление шума и не восстановление качества.