Как добавить метаданные к MP3, MP4 и OGG через командную строку без использования FFMPEG?

Как добавить отметки главы в аудиофайл без потери других метаданных

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

Простой способ добавления глав

Существует несколько утилит, которые могут помочь вам в создании глав для разных аудиоформатов. Например:

  • Для формата ID3 (например, .mp3) можно использовать утилиту mp3chap.
  • Для форматов Vorbiscomment (.ogg, .flac, .opus и др.) подойдет утилита vorbiscomment.
  • Для форматов Isobmff (.mp4, .m4a, .m4b) на данный момент есть только функциональность в FFMPEG.

Если вам важен графический интерфейс, можно использовать плагин MP4V2, который доступен в настройках некоторых GUI-программ.

Уникальное решение для всех форматов

Есть способ добавления глав к аудиофайлам почти всех форматов, используя два инструмента:

  1. FFMPEG — для добавления глав (но может удалить некоторые теги).
  2. 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, вы можете легко управлять главами в большинстве популярный аудиоформатах. Надеемся, что эта информация была полезной и поможет вам в ваших проектах!

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *