Por que um FLAC é codificado de um MP3 decodificado maior que o MP3?

13

Para ser mais preciso do que no título, suponha que eu tenha um arquivo MP3 de 320 kbps. Se eu descomprimi-lo, então, logicamente, todos os dados, exceto por cerca de 320 kilobits de cada segundo de áudio, devem ser dados redundantes, capazes de serem comprimidos. Então, quando eu codifico o arquivo descompactado para o FLAC, ou qualquer outro codec sem perdas, por que ele é muito maior?

Em uma nota relacionada, é teoricamente possível recuperar, sem perdas, a fonte de áudio mp3 de um wav descompactado? (Eu sei que o mp3 em si é com perdas. Eu estou perguntando se é possível codificar novamente sem qualquer mais perda.)

EDIT: Deixe-me esclarecer a questão relacionada e a lógica por trás dela. Suponha que eu tenha um wav que foi descompactado de um arquivo MP3 (e suponha que eu não tenha o mp3 por algum motivo). Se eu não quiser perder mais qualidade, posso re-codificá-lo com FLAC ou qualquer outro codificador sem perdas e obter um arquivo maior apenas para manter a mesma qualidade . Ou posso recodificá-lo para mp3 novamente e obter o mesmo tamanho que o original, mas perder mais dados. Obviamente, nenhum desses casos é ideal. Eu posso ter o tamanho original ou a qualidade original, mas não ambos (quero dizer a qualidade do mp3 original, não a fonte sem perdas original). Minha pergunta é: podemos pegar os dois? É teoricamente possível recuperar os dados comprimidos com perdas dos dados descompactados com perdas, sem perder ainda mais?

Se for possível, posso imaginar um algoritmo de compactação sem perdas que comprima o áudio com o FLAC. Em seguida, ele também verifica o áudio em busca de qualquer sinal de compactação com perdas anterior e, se detectado, recompacta-o sem perda para o arquivo com perdas original. Em seguida, ele mantém o arquivo menor.

    
por Ryan Thompson 30.10.2009 / 07:16

4 respostas

31

A razão pela qual o FLAC é maior que o MP3 dos mesmos dados é porque eles codificam de forma diferente. :) O MP3 apenas codifica a informação perceptual, enquanto o FLAC armazena cada partícula de dados, apenas em um formato mais compacto.

  • Converter um WAV em um FLAC é como converter um BMP em um PNG.
    • Mesmos pixels exatos, mas compactados sem perdas, como um arquivo ZIP em um tamanho menor.
  • Converter um WAV em um MP3 é como converter um BMP em um JPEG.

Da mesma forma, MP3 apenas armazena instruções para gerar ondulações que, quando somadas, soam como as originais. Mas a diferença entre o sinal verdadeiro e o sinal gerado (o sinal de erro) consiste em artefatos ruidosos aleatórios, como jaggies JPEG . Quando você armazena isso em um formato perfeccionista como FLAC, ele precisa armazenar todos esses jaggies, e o ruído aleatório é mais difícil de compactar sem perda, então aumenta o tamanho do arquivo. (O ruído verdadeiramente aleatório é incompressível. Quando você compacta um arquivo sem perda, você elimina os padrões de repetição redundantes e faz com que pareça mais com um ruído aleatório.)

Aposto que se você converter JPEG para PNG, verá o mesmo tipo de aumento de tamanho que você vê ao converter MP3 para FLAC, já que o codec perfeccionista sem perdas precisa lembrar de cada pequeno jaggy e artefato que não estava no bmp original.

Essa analogia não é perfeita, já que o áudio é mais parecido com uma foto do que com um diagrama de arte vetorial, mas ajuda a transmitir a ideia:

Tamanho original da BMP: 29 kB

tamanhoPNG:629B

Tamanho JPEG: 1,7 kB

PNG criado a partir de JPEG: 6,2 kB

    
por 30.10.2009 / 07:25
2

Quando você decodifica um MP3, não importa qual bitrate, você obtém áudio PCM padrão de 1411kbps / 44100Hz 16 bits (ou qualquer que seja a fonte) que tenha todos os efeitos visíveis e não perceptíveis do processo de codificação com perdas, esse formato é obrigatório para reprodução e codificação / recodificação, qualquer arquivo de qualquer codec está sendo descompactado quando você o reproduz no seu computador, MP3 player, etc.

O codificador FLAC não se importa se o áudio que está sendo comprado vem de um MP3 decodificado ou de um CD novo, ele simplesmente reduzirá o tamanho do arquivo de origem sem qualquer alteração nos dados de áudio, fazendo uma recuperação completa do fonte possível, um processo sem perdas.

Um arquivo FLAC feito de um MP3 soará exatamente como o MP3, um arquivo FLAC feito de uma trilha de CD soará exatamente como o CD.

    
por 30.10.2009 / 07:58
0

Para responder à segunda parte, se você converter de volta para um WAV do MP3 e escolher um codificador sem perdas, deverá ter um arquivo de qualidade idêntica quando terminar.

Quanto ao motivo pelo qual o FLAC é maior que o MP3, você está pegando um dos formatos mais compactados, descompactando-o e recompactando-o em uma ferramenta de compactação menos eficiente (embora com uma qualidade de reprodução mais alta).

É como perguntar por que a conversão de um JPG para um PNG o torna maior - você está [parcialmente] descompactando o arquivo e, em seguida, recompactando de uma maneira sem perdas. O FLAC, como o PNG, não é otimizado para espaço , mas para qualidade .

    
por 30.10.2009 / 07:34
0

mp3 requer que um decodificador seja reproduzível, o resultado do decodificador é uma aproximação da faixa original (geralmente de um CD), então o decodificador adiciona dados para torná-lo reproduzível (e isso não é um dado sem sentido). A aproximação resultante recebeu a mesma taxa de bits da trilha original. Sem decodificar o mp3 a informação não faz sentido, por isso não pode ser convertida para qualquer outra coisa (a menos que seja uma codificação muito similar, como estéreo-mp3 para 2X mono-mp3). E FLAC e mp3 não é nem perto de semelhante. Ao decodigar um FLAC, o resultado não é uma aproximação dos dados orignais codificados no FLAC, mas é exatamente o mesmo.

    
por 30.10.2009 / 09:30