Как добавить отметки главы в аудиофайл без потери других метаданных
Добавление отметок главы в аудиофайлы может быть сложной задачей, особенно когда вы хотите сохранить другие метаданные. Одним из популярных инструментов для работы с аудиофайлами является FFMPEG, который позволяет удобно манипулировать данными. Однако, многие пользователи сталкиваются с проблемой: FFMPEG удаляет метаданные, которые он не распознает. В этой статье мы рассмотрим, как добавить главы в аудиофайл через командную строку, не теряя другие важные теги.
Простой способ добавления глав
Существует несколько утилит, которые могут помочь вам в создании глав для разных аудиоформатов. Например:
- Для формата ID3 (например, .mp3) можно использовать утилиту
mp3chap
. - Для форматов Vorbiscomment (.ogg, .flac, .opus и др.) подойдет утилита
vorbiscomment
. - Для форматов Isobmff (.mp4, .m4a, .m4b) на данный момент есть только функциональность в FFMPEG.
Если вам важен графический интерфейс, можно использовать плагин MP4V2, который доступен в настройках некоторых GUI-программ.
Уникальное решение для всех форматов
Есть способ добавления глав к аудиофайлам почти всех форматов, используя два инструмента:
- FFMPEG — для добавления глав (но может удалить некоторые теги).
- Kid3 — для последующей записи оригинальных тегов обратно в файл.
Предположим, у вас есть аудиофайл audio.m4a
и файл метаданных FFMPEG с главами, названный ffmetadata.txt
. Вы можете выполнить следующие шаги:
ffmpeg -i audio.m4a -i ffmetadata.txt -map 0:a -map_metadata 1 -map_chapters 1 -codec copy temp.m4a
kid3-cli -c "timeout off" -c "select 'audio.m4a'" -c "copy" -c "select 'temp.m4a'" -c "paste" -c "save"
После выполнения этих команд замените исходный файл временным:
- На Linux:
mv -f temp.m4a audio.m4a
- В PowerShell:
move -force temp.m4a audio.m4a
Обработка уже существующих глав
Если исходный файл уже содержит главы, которые вы хотите заменить, процесс становится немного более сложным. Для этого можно использовать сценарий QML:
ffmpeg -i audio.m4a -i ffmetadata.txt -map 0:a -map_metadata 1 -map_chapters 1 -codec copy temp.m4a
kid3-cli -c "timeout off" -c "select 'audio.m4a'" -c "execute @qml 'DeselectChapterTags.qml'" -c "copy" -c "select 'temp.m4a'" -c "paste" -c "save"
Полезные советы
Во время исследований этой темы были обнаружены несколько моментов, которые могут быть полезны:
- Некоторые советы советуют использовать Exiftool вместо Kid3. Однако это не рекомендуется, так как Exiftool также удаляет неподдерживаемые теги.
- Вы можете добавить
-movflags disable_chpl
в команду FFMPEG. Это отключит создание глав в формате Nero, который может не поддерживаться некоторыми плеерами. - FFMPEG рассматривает названия глав как часть метаданных. Поэтому вы должны использовать как
-map_metadata 1
, так и-map_chapters 1
. - Убедитесь, что команды Kid3 выполняются в том же каталоге, где находятся ваши аудиофайлы.
Заключение
Добавление глав в аудиофайлы может быть сложным процессом, особенно когда речь идет о сохранении других метаданных. Однако, используя FFMPEG и Kid3, вы можете легко управлять главами в большинстве популярный аудиоформатах. Надеемся, что эта информация была полезной и поможет вам в ваших проектах!