Dicionário

O que é karaokê?

Karaokê é cantar ao vivo com música gravada enquanto você lê as palavras na tela. Em um arquivo de mídia, karaokê é uma marcação que identifica um fluxo como áudio de karaokê.

karaoke

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á desativado
  • 1: 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 karaoke em uma tag chamada Disposition
  • 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 LYRICS guarda 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.