Караоке це музична система, яка відтворює записаний супровід до популярної пісні. Виконавець співає пісню наживо, зазвичай слідкуючи за словами на екрані. Це слово також означає саме виконання.
Японське слово поєднує kara, що означає порожній, із скороченою формою слова оркестр. Отже, karaoke буквально означає порожній оркестр.
У звіті з метаданих Karaoke є полем з вужчим значенням. Назва походить від ffprobe, засобу читання файлів у проєкті FFmpeg.
FFmpeg перелічує кожну частину файлу як окремий потік. Кожен потік отримує набір прапорців, що називається disposition, зокрема Karaoke та Attached Pic. Документація FFmpeg визначає цей прапорець у кількох словах: потік містить аудіо караоке.
Як виглядають значення
Параметр -show_streams засобу читання ffprobe виводить цей прапорець для кожного потоку, навіть у файлах без музики. У цьому виводі прапорець має 2 значення:
0: прапорець вимкнено1: прапорець увімкнено, тож потік позначено як аудіо караоке
Точна форма залежить від звіту. У звіті JSON показано "karaoke": 0, а в текстовому звіті показано DISPOSITION:karaoke=0.
Які файли містять його
FFmpeg зчитує та записує цей прапорець у деяких форматах, але не в усіх, як показано в цих прикладах:
- NUT: потік може зберігати слово
karaokeу теґу з назвоюDisposition - MKV: специфікація Matroska має такі прапорці, як default, forced і commentary, але не має прапорця karaoke
- MP4: у списку ролей доріжок MP4 у FFmpeg немає запису karaoke
- Аудіо AC-3 та E-AC-3: аудіодані мають тип сервісу, і одне зі значень означає караоке
FFmpeg перетворює тип сервісу караоке на прапорець, коли аудіо має 2 або більше каналів, також у файлі MKV чи MP4. Для інших аудіоформатів потік у файлі MKV або MP4 зазвичай показує 0, навіть якщо пісня є версією караоке.
Деякі пісні караоке використовують власний тип файлу. Бібліотека Конгресу вказує розширення файлу kar для MIDI-файлів караоке.
Де зберігаються слова пісні
Прапорець Karaoke не містить слів, а лише число 0 або 1. FFmpeg має окремий прапорець Lyrics для потоку з текстом пісні. Сам текст зберігається в різних місцях залежно від формату:
- MP3: фрейм ID3v2 USLT містить текст пісні без таймінгу, а фрейм SYLT зберігає часову позначку для кожного складу або текстової одиниці
- MKV: теґ
LYRICSмістить слова, коли таймінг невідомий, або як копія доріжки субтитрів
Звідки походить значення
FFmpeg встановлює прапорці, коли створює кожен потік, або пізніше, коли аналізує потік. Для файлу NUT FFmpeg читає прапорці з теґу Disposition. Для аудіо AC-3 FFmpeg зчитує тип сервісу з аудіоданих.
За допомогою параметра FFmpeg -disposition ви можете встановити прапорець самостійно. Типово FFmpeg копіює прапорці з вхідного потоку в вихідний.
Прапорець, який зберігається лише в контейнері, переходить у новий файл тільки якщо новий формат може його зберігати. Модуль запису FFmpeg для MKV не має коду для цього прапорця.
Чому це важливо
Файл може містити кілька аудіопотоків, і цей прапорець може позначати один із них як аудіо караоке. У командах FFmpeg селектор потоків disp:karaoke вибирає потоки, які мають цей прапорець.
Прапорець є лише міткою, тож він не підтверджує того, що ви чуєте. Значення 0 не доводить, що пісня не має версії караоке або тексту.