Lyrics - это текст песни. В метаданных поле Lyrics хранит этот текст внутри аудио- или видеофайла. В отчете ffprobe также может быть показан флаг Lyrics.
Стандарт ID3v2 описывает текстовое поле как текст песни (lyrics) или текстовую транскрипцию других вокальных партий. Текст хранится отдельно от звука, поэтому его можно прочитать только программой, которая читает это поле.
Какие файлы его содержат
Каждый формат файла хранит lyrics под своим именем поля. В распространенных форматах используются такие имена:
- MP3: кадры ID3v2
USLTдля обычного текста иSYLTдля текста с таймингом. - WAV и AIFF: те же кадры ID3v2, если файл содержит тег ID3.
- FLAC и OGG: комментарий Vorbis. В MusicBrainz Picard он называется
LYRICS, но ни одна спецификация не закрепляет это имя. - M4A и MP4: элемент метаданных
©lyr. - MKV: тег Matroska
LYRICS. - WMA и WMV: атрибуты
WM/LyricsиWM/Lyrics_Synchronised.
Текст lyrics что это: обычный и синхронизированный
Обычные lyrics - это один блок текста без привязки ко времени. Синхронизированные lyrics связывают каждую часть текста с моментом записи. Тогда программа может показывать слова в такт звуку, например для караоке.
В кадре ID3v2 SYLT каждая часть текста имеет временную метку. Временная метка отсчитывается от начала файла в миллисекундах или кадрах MPEG.
Как выглядит это значение
Обычное значение - это обычный текст, в котором могут быть разрывы строк. Для синхронизированного текста ExifTool ставит временную метку в квадратных скобках перед каждой записью: [MM:SS.ss] для секунд или [FFFF] для кадров MPEG.
Файл может содержать lyrics на нескольких языках. В ID3v2 каждый кадр USLT или SYLT имеет 3-буквенное поле языка по ISO 639-2. Примеры значений:
engдля английскогоdeuилиgerдля немецкогоXXX, когда язык неизвестен, как сказано в тексте ID3v2
Для кадра ID3v2 USLT без описания FFmpeg добавляет код языка к ключу, как в lyrics-eng для английского текста. Для неизвестного языка FFmpeg 9.0 показывает lyrics-XXX, а его разрабатываемая версия показывает просто lyrics. ExifTool использует тот же шаблон для выбранного языка, например Lyrics-eng.
Lyrics как флаг потока
В отчете ffprobe, средства чтения файлов проекта FFmpeg, Lyrics также может быть флагом потока, со значением 0 или 1. Документация FFmpeg кратко описывает его так: поток содержит текст песни. Сам флаг не содержит слов.
Опция -show_streams в ffprobe выводит этот флаг для каждого потока, рядом с флагом Karaoke. Поэтому вы можете увидеть 0 в файле без музыки. Значение 0 не доказывает, что в файле нет текста lyrics.
Откуда берется текст
Текст Lyrics не извлекается из звука автоматически. Его должен добавить человек или программа.
Программы для тегирования могут записывать это поле. MusicBrainz Picard для текста требует плагин или скрипт, потому что в его базе данных нет lyrics.
При конвертации текст может перейти в новый файл. FFmpeg по умолчанию копирует глобальные метаданные из первого входного файла. Поэтому конвертированный файл может сохранить текст Lyrics из исходного, даже если вы никогда сами не проставляли этот тег.
Почему это важно для вашего файла
Текстовое поле Lyrics может содержать полный текст песни. Когда вы делитесь файлом, вы также делитесь этим текстом, даже если плеер его не показывает.
Отсутствие текстового поля ничего не говорит вам о песне. У песни со словами может не быть текста Lyrics. Текст также может отличаться от того, что вы слышите.
Один файл может показывать несколько значений Lyrics, например обычный и синхронизированный текст или текст на 2 языках. В файле Matroska тег LYRICS также может дублировать дорожку субтитров. В спецификации сказано, что обычно следует редактировать оба.