Karaokê é um sistema de música que reproduz o acompanhamento gravado de uma canção popular. Uma pessoa canta a música ao vivo, geralmente acompanhando as palavras em uma tela de vídeo. A palavra também pode significar a própria apresentação.
A palavra japonesa junta kara, que significa vazio, com uma forma curta da palavra para orquestra. Então karaokê significa literalmente orquestra vazia.
Em um relatório de metadados, Karaokê é um campo com um significado mais específico. O nome vem do ffprobe, o leitor de arquivos do projeto FFmpeg.
O FFmpeg lista cada parte de um arquivo como um fluxo separado. Cada fluxo recebe um conjunto de sinalizadores chamado disposition, como Karaokê e Attached Pic. A documentação do FFmpeg define esse sinalizador em poucas palavras: o fluxo contém áudio de karaokê.
Como são os valores
A opção -show_streams do leitor ffprobe imprime o sinalizador para cada fluxo, mesmo em arquivos sem música. O sinalizador tem 2 valores nessa saída:
0: o sinalizador está desativado1: o sinalizador está ativado, então o fluxo é marcado como áudio de karaokê
A forma exata depende do relatório. Um relatório em JSON mostra "karaoke": 0, e um relatório em texto simples mostra DISPOSITION:karaoke=0.
Quais arquivos o carregam
O FFmpeg lê e grava esse sinalizador em alguns formatos, mas não em outros, como mostram estes exemplos:
- NUT: um fluxo pode armazenar a palavra
karaokeem uma tag chamadaDisposition - MKV: a especificação Matroska tem sinalizadores como default, forced e commentary, mas não tem um sinalizador de karaokê
- MP4: a lista do FFmpeg de funções de faixa MP4 não tem uma entrada para karaokê
- Áudio AC-3 e E-AC-3: os dados de áudio têm um tipo de serviço, e um valor significa karaokê
O FFmpeg transforma o tipo de serviço karaokê em sinalizador quando o áudio tem 2 ou mais canais, também em um arquivo MKV ou MP4. Com outros formatos de áudio, um fluxo em um arquivo MKV ou MP4 normalmente informa 0, mesmo quando a música é uma versão de karaokê.
Algumas músicas de karaokê usam um tipo de arquivo próprio. A Library of Congress lista a extensão de arquivo kar para arquivos MIDI de karaokê.
Onde as palavras da música são armazenadas
O sinalizador Karaokê não guarda palavras, apenas o número 0 ou 1. O FFmpeg tem um sinalizador separado Lyrics para um fluxo com letras de música. O próprio texto fica em um lugar diferente em cada formato:
- MP3: o frame USLT do ID3v2 guarda as letras sem marcação de tempo, e o frame SYLT armazena um carimbo de tempo para cada sílaba ou unidade de texto
- MKV: uma tag
LYRICSguarda as palavras quando a marcação de tempo não é conhecida, ou como uma cópia de uma faixa de legenda
De onde vem o valor
O FFmpeg define os sinalizadores quando cria cada fluxo ou depois, quando inspeciona o fluxo. Para um arquivo NUT, o FFmpeg lê os sinalizadores da tag Disposition. Para áudio AC-3, o FFmpeg lê o tipo de serviço a partir dos dados de áudio.
Com a opção -disposition do FFmpeg, você pode definir o sinalizador manualmente. Por padrão, o FFmpeg copia os sinalizadores do fluxo de entrada para o fluxo de saída.
Um sinalizador que só o contêiner guarda chega ao novo arquivo apenas se o novo formato puder armazená-lo. O gravador do FFmpeg para MKV não tem código para esse sinalizador.
Por que isso é importante
Um arquivo pode conter vários fluxos de áudio, e esse sinalizador pode marcar um deles como áudio de karaokê. Em comandos do FFmpeg, o seletor de fluxo disp:karaoke seleciona os fluxos que têm o sinalizador.
O sinalizador é apenas um rótulo, então ele não prova o que você ouve. Um valor de 0 não prova que a música não tem versão de karaokê ou não tem letras.