Alguém me pediu para tirar o som de uma gravação de palestra de 40 minutos para que pudesse ligar para um telefone para o trajeto. Fiz a coisa óbvia primeiro, que foi convertê-lo em MP3, e levou alguns minutos e produziu um arquivo um pouco maior que o áudio que já estava dentro do vídeo. Então eu fiz o que deveria ter feito primeiro e copiado a faixa. Demorou em um segundo, o arquivo era menor e o áudio era um pouco idêntico ao que o gravador capturou. O segundo método não é um truque ou um atalho. É para o que o formato de arquivo foi projetado e quase todos os conversores que respondem a essa pergunta o ignoram.
tl;dr: Um MP4 ou MOV geralmente carrega áudio AAC e um M4A é o mesmo AAC em um contêiner somente de áudio da mesma família, então a faixa pode ser copiada diretamente sem decodificação e sem perda. Medido em um clipe de teste de 60 segundos aqui: a cópia finalizada em 0,04 segundos e o fluxo de áudio extraído com o mesmo MD5 do fluxo dentro do vídeo. A codificação do mesmo áudio para MP3 em 192 Kbps levou 0,36 segundos, produziu um arquivo 48% maior e passou por uma segunda rodada de compressão com perdas de que não precisava. Escolha M4A a menos que algo downstream o recuse, escolha WAV quando um editor ou transcritor quiser PCM e escolha MP3 apenas para um dispositivo que não lê mais nada. o extrator de áudio Faz todos os três na guia do navegador, portanto, uma reunião gravada nunca sai da máquina.
O que há dentro de uma faixa de áudio de um MP4?
Um MP4 é um contêiner, o que significa que é um sistema de arquivamento e não um formato. Dentro dele estão os fluxos separados: um segurando imagens compactadas, uma segurando o som comprimido, às vezes faixas de legendas e marcadores de capítulos ao lado deles. O contêiner descreve onde cada um começa, quanto tempo ele é executado e qual codec foi usado, e isso é quase tudo o que faz.
O fluxo de som em um MP4 é quase sempre AAC. É isso que um iPhone produz, o que uma gravação de tela do Mac produz, o que uma exportação QuickTime produz, o que um drone produz e o que cada câmera que escreve MP4 ou MOV produziu por cerca de quinze anos. Existem exceções, principalmente arquivos mais antigos com áudio MP3 dentro de um wrapper MP4 e formatos profissionais com PCM não compactado, mas o AAC é o padrão esmagador.
Isso pode ser verificado em qualquer arquivo que você tenha. ffprobe Dirá em uma linha, e o inspetor de arquivos também o fará na maioria dos players de vídeo. No clipe de teste que criei para este guia, o áudio do fluxo relata como aac, 44100 Hz, stereo, 128158 bit/s, que é uma gravação comum de uma câmera.
A consequência útil é a da próxima seção. Depois de saber que o fluxo é AAC, você sabe que um M4A pode segurá-lo sem tocá-lo.
Por que o áudio pode sair sem ser convertido?
Porque o M4A é o mesmo contêiner com a parte de vídeo deixada de fora.
Tanto o MP4 quanto o M4A são perfis do formato de arquivo de mídia ISO base, a estrutura padronizada como ISO/IEC 14496-12 e compartilhada por MP4, M4A, M4V, MOV e um punhado de outros. Ele surgiu do formato QuickTime da Apple, cujo O layout da caixa ainda está documentado na íntegra E lê como uma descrição do MP4 porque quase é um. As caixas são dispostas da mesma maneira, as tabelas de amostra funcionam da mesma maneira e uma faixa AAC escrita em uma é byte para o byte a mesma faixa escrita na outra. A extensão difere para que um sistema operacional saiba se deve abrir uma janela do player, e é mais para isso que a extensão é.
Portanto, extrair áudio de um MP4 para um M4A não é uma conversão. É um remux: as amostras de áudio são lidas em um contêiner e escritas em outro, e nenhum decodificador ou codificador está envolvido em qualquer momento. Nada é interpretado, então nada pode ser degradado.
Esta é a mesma distinção que causa o maior mal-entendido no lado do vídeo, coberto com O guia de formato de vídeo: Alterar um wrapper está quase livre, mas também não é mudar a compressão dentro dele. A extração de áudio é o caso em que a opção gratuita também é a correta, o que é mais raro do que deveria.
Em termos FFmpeg, toda a operação é quatro argumentos:
ffmpeg -i recording.mp4 -vn -acodec copy recording.m4a
-vn Solta o fluxo de vídeo. Deixe-o de fora e o FFmpeg tenta levar a imagem para um recipiente que não tem onde colocá-la, o que produz um M4A que seu reprodutor de música se recusa a abrir. -acodec copy É a parte que o torna sem perdas: ele diz ao FFmpeg para passar as amostras em vez de entregá-las a um codificador.
Como você sabe que a cópia realmente não perdeu nada?
Porque você pode fazer o hash do fluxo antes e depois, e os dois hashes correspondem.
Eu construí um arquivo de teste de 60 segundos, vídeo de 1280x720 H.264 com uma faixa AAC estéreo de 128 kbps, 19 MB no total. Em seguida, eu coloquei o fluxo de áudio dentro do vídeo, copiei o áudio e o puxei novamente:
$ ffmpeg -i src.mp4 -vn -c:a copy -f md5 -
MD5=650032f86f01780991c64c30bd02f71b
$ ffmpeg -i src.mp4 -vn -acodec copy out.m4a
real 0.04
$ ffmpeg -i out.m4a -c:a copy -f md5 -
MD5=650032f86f01780991c64c30bd02f71b
Mesmo resumo, os dados de áudio compactados no M4A são os dados de áudio compactados do vídeo, sem alterar um pouco. O arquivo extraído tinha 950 KB e toda a operação levou 0,04 segundos, o que é aproximadamente o tempo necessário para ler 19 MB de um SSD.
Esse teste vale a pena ser executado em seu próprio arquivo em vez de assumir confiança, porque é a única maneira de dizer uma cópia real de uma conversão que afirma ser uma. Se os dois hashes forem diferentes, algo codificou novamente seu áudio enquanto informa que não.
O que custa escolher MP3?
Uma segunda geração de compressão com perdas, além de um arquivo maior.
AAC e MP3 funcionam descartando o que um modelo psicoacústico prevê que você não pode ouvir, e eles discordam sobre o que é. Eles dividem o sinal em diferentes números de bandas, modelam o mascaramento de forma diferente e lidam com os transientes repentinos de maneira diferente. Portanto, quando um codificador de MP3 recebe a saída decodificada de um arquivo AAC, ele não pode dizer quais peças vieram do microfone e qual o primeiro codificador deixou para trás. Ele gasta pedaços preservando ambos e joga fora um pouco do que sobreviveu à primeira passagem.
Aqui está o mesmo clipe de 60 segundos em cada caminho:
| produção | Como foi feito | Tamanho | tempo | Perda adicional |
|---|---|---|---|---|
| m4a | stream AAC copiado | 972.706 bytes | 0,04 s | Nenhum, idêntico ao hash |
| MP3 192 kbps | Decodificado, recodificado com LAME | 1.441.479 bytes | 0,36 s | Sim, segunda geração |
| ondular | Decodificado para PCM de 16 bits | 10.584.142 bytes | 0,05 s | Nenhum adicionado, nenhum desfeito |
O MP3 é 48% maior que o M4A, enquanto mantém o áudio que passou por mais um codificador com perdas. Não há nenhuma configuração que evite isso, porque a perda está na decodificação e na codificação novamente em vez de na taxa de bits.
Nada disso torna o MP3 errado. Um som de carro de 2009, um gravador de voz barato, uma esteira de ginástica com uma porta USB e uma quantidade surpreendente de software de transmissão lerá MP3 e nada mais. Quando esse é o destino, a perda de geração é o preço do arquivo reproduzido, e é um preço pequeno na fala. O objetivo é pagar de forma consciente e não porque uma ferramenta escolheu MP3 para você.
Uma taxa de bits de MP3 mais alta melhora a extração?
Isso torna o MP3 uma cópia mais fiel do áudio danificado, o que não é a mesma coisa que melhor.
Eu testei isso com uma fonte de banda larga, porque os tons puros são fáceis para um codec e não dizem nada. O clipe de teste foi de 30 segundos de ruído rosa misturado com um seno baixo, codificado para 128 kbps AAC, que é aproximadamente o quão difícil é a música real em um codificador. Então decodifiquei esse AAC para PCM para usar como referência, codifiquei para MP3 em duas taxas de bits e medi a relação sinal/distorção de cada um em relação à referência:
| Taxa de bits do mp3 | tamanho por 30 segundos | SDR contra a fonte AAC |
|---|---|---|
| 192 kbps | 705 KB | 26,7 dB |
| 320 kbps | 1,1 Mb | 42,3 dB |
O arquivo de 320 Kbps é uma reprodução muito mais próxima do áudio AAC, em cerca de 15 dB. O que não é é uma reprodução mais próxima da gravação original, porque o AAC já descartou isso e nenhum codificador pode colocá-lo de volta. Os 400 KB extras compraram uma cópia mais fiel da saída do primeiro codificador, incluindo os artefatos.
Então a regra de O guia do conversor de áudio se mantém, com uma razão mais nítida por trás disso. Corresponder ou reduzir um pouco a taxa de bits da fonte é o intervalo sensato. Indo bem acima, está gastando armazenamento para preservar os detalhes que não estão na gravação, e indo bem abaixo, joga fora uma segunda porção do que está.
Se a fidelidade ao original é o que você gosta, a resposta não é uma taxa de bits. É a cópia do M4A, que não tem nenhuma decisão de taxa de bits a ser tomada.
Quando o WAV é a resposta certa?
Quando algo downstream quer PCM, o que é mais frequente do que as pessoas esperam.
Os editores de áudio preferem isso porque não necessita de decodificação e podem ser editados amostra por amostra. Os serviços de transcrição e os modelos de fala frequentemente exigem isso, e aqueles que aceitam áudio compactado geralmente decodificam para PCM internamente. Ferramentas de alinhamento forçado, software de análise acústica e qualquer coisa que faça processamento de sinal começa a partir do PCM.
O WAV não adiciona mais perdas, embora não possa desfazer o que a fonte já foi descartada. Um WAV feito de uma trilha AAC de 128 Kbps ainda tem todos os detalhes ausentes que o AAC estava faltando. É um recipiente fiel para áudio danificado, que é exatamente o que você deseja quando a próxima etapa é a análise e não a escuta.
O resultado medido é tranquilizador neste ponto. A WAV que extraí foi um pouco idêntico a uma decodificação direta do áudio de origem, mesmo MD5, então a extração não acrescentou nada. O custo é o tamanho, que a próxima seção cobre.
O estéreo de 16 bits de 44,1 kHz é o padrão sensato e o que o extrator escreve. É uma especificação de CD, é legível universalmente e nada é ganho escrevendo PCM de 24 bits de uma fonte com perdas para começar.
Qual será o tamanho do arquivo?
Previsivelmente, que é a parte útil.
O tamanho do áudio é uma duração de tempos de bits, sem dependência de conteúdo, portanto, ao contrário do vídeo, você pode dizer a você antes do início do trabalho, e não depois do adivinhado.
| formato | por minuto, estéreo | uma hora |
|---|---|---|
| M4A copiado de uma fonte de 128 Kbps | 0,95 Mb | 57 MB |
| MP3 192 kbps | 1,4 MB | 84 MB |
| mp3 128 kbps | 0,96 Mb | 58 MB |
| WAV 16 bits 44,1 kHz | 10,1 Mb | 606 MB |
A linha WAV é aquela que surpreende as pessoas. 10,1 MB por minuto é um valor medido do teste acima, e segue diretamente da aritmética: 44.100 amostras por segundo, dois bytes por amostra, dois canais. Uma hora de áudio de palestra em WAV é um arquivo de 600 MB, que é maior do que muitos dos vídeos dos quais saiu e maior do que alguns serviços aceitam como upload.
É também por isso que o extrator mostra uma estimativa antes de ser executado. Uma gravação de uma hora extraída para WAV é uma coisa razoável para querer e uma coisa irracional para se surpreender.
Por que uma WebM se recusa a copiar seu áudio em um M4A?
Como o codec dentro dele é um que o contêiner MPEG-4 não carrega, e a ferramenta é honesta sobre isso, em vez de recodificar silenciosamente.
Um WebM contém áudio Opus ou Vorbis, não AAC. Nenhum dos dois pertence a um M4A no que diz respeito aos muxers padrão, portanto, o caminho da cópia não está disponível. FFmpeg diz tão claramente:
[ipod @ 0x75bd019180] Could not find tag for codec opus in stream #0,
codec not currently supported in container
[out#0/ipod] Could not write header (incorrect codec parameters ?)
Existe uma especificação publicada para Encapsulando OPUS em um contêiner de mídia base ISO, então esta é uma realidade de ferramental e playback em vez de uma impossibilidade teórica. Na prática, nada que você entregaria ao arquivo para reproduzir um M4A cheio de opus, então a resposta útil é recodificar. No mesmo conteúdo de teste, que levou 0,32 segundos para 20 segundos de áudio e produziu um arquivo de 473 KB, que é uma geração de perda e a única opção disponível.
A mesma lógica decide todas as outras fontes. MP4, MOV, M4V e M4A podem ter seu AAC copiado. WebM, MKV com Opus ou Vorbis e qualquer coisa que carregue um codec de fora da família MPEG-4 não pode, e o extrator diz em qual caso você está antes de começar e não depois.
Por que as durações não correspondem exatamente?
Porque AAC e MP3 preenchem sua saída e os dois contêineres lidam com esse preenchimento de maneira diferente. É o detalhe que quebra a reprodução sem garupa e aparece claramente nos números de teste.
O áudio da fonte foi exatamente 60 segundos, 2.646.000 amostras em 44,1 kHz. O M4A extraído relata uma duração de exatamente 60,00000 segundos. O WAV extraído e o MP3 relatam 60,00363 segundos, que é 16 amostras mais longas.
Essas 16 amostras são de atraso do codificador. AAC funciona em 1024 quadros de amostra, de modo que uma gravação de 60 segundos não se divide uniformemente e o codificador abaixa a ponta. O M4A esconde isso usando uma lista de edição, uma pequena tabela no contêiner que indica qual parte da saída decodificada é a gravação real. Decodifique o M4A e você terá 2.646.016 amostras preenchidas de volta, que é de onde vêm os 0,39 milissegundos extras do WAV.
MP3 não possui uma lista de edição, porque o formato antecede a ideia. O que tem em vez disso é a etiqueta de informação ruim, um bloco de fornecedor no primeiro quadro registrando quantas amostras descartar em cada extremidade. o O layout do campo é documentado byte por byte, e o atraso do codificador e o preenchimento final compartilham os bytes de 0xb1 a 0xb3 como dois valores de 12 bits. Decodificado, o MP3 voltou para 2.646.016 amostras, correspondendo exatamente ao WAV, então a tag fez seu trabalho aqui. Um jogador que o ignora, ou um codificador que não consegue escrevê-lo, é de onde vem o clique audível entre as faixas de um álbum contínuo.
Nada disso importa para uma palestra ou um podcast. Importa muito para um álbum ao vivo ou uma mixagem de DJ, e é a razão pela qual vale a pena preferir o caminho da cópia: não há codificador envolvido, portanto, não há um novo preenchimento para se contabilizar.
O M4A toca em todos os lugares do MP3?
Perto dele, com uma pequena lista de exceções que vale a pena saber antes de se comprometer.
Tudo que fez esta década jogar M4A. iOS e Android funcionam nativamente, todos os sistemas operacionais de desktop funcionam, todos os navegadores fazem, Spotify e VLC e Plex e o aplicativo Stock Music em qualquer telefone que você possui. O formato tem vinte anos e foi a saída padrão do telefone mais popular do mundo para a maioria deles.
O agrupamento de exceções em dois lugares. O primeiro são os aparelhos de som de carros mais antigos e hardware autônomo, principalmente unidades principais antes de 2012, onde um pendrive cheio de arquivos M4A é considerado vazio. O segundo é um software que aceita uploads de áudio e valida por extensão e não por conteúdo, que recusa um M4A em uma lista escrita há anos e nunca revisitada. Os serviços de transcrição eram um infrator comum aqui, que é como o jornalista O guia do conversor de áudio Acabou com quatro horas de arquivos que seu serviço não aguentaria.
Uma abordagem razoável: extraia primeiro o M4A, porque é instantâneo e sem perdas, e mantenha-o como o mestre. Se o destino recusar, converta esse M4A para MP3 uma vez. Você pagou por uma geração de perdas em vez de tornar a cópia com perdas sua única cópia.
Quanto tempo demora uma extração e o que decide isso?
Ler o arquivo, principalmente, e se um codificador está envolvido.
O caminho da cópia é limitado pela velocidade do disco e pela memória, e não pelo processamento. 0,04 segundos para um arquivo de 19 MB não é o áudio que está sendo trabalhado, é o arquivo que está sendo lido e um novo contêiner sendo escrito. Aumentando isso, uma gravação de palestra de 40 minutos de algumas centenas de megabytes é exibida em um ou dois segundos, e quase tudo isso é o navegador que lê o arquivo na guia.
Os caminhos de codificação são limitados pelo codificador. Lame levou 0,36 segundos para 60 segundos de áudio estéreo nesta máquina, que é aproximadamente 165 vezes mais rápido que o tempo real, então uma hora de áudio é de cerca de 20 segundos de trabalho. A re-codificação AAC de uma WebM medida de forma semelhante. Estes são rápidos o suficiente para que a barra de progresso esteja lá principalmente por honestidade, e não por necessidade.
Uma coisa domina todo o resto, e não é o áudio. Carregar o vídeo de origem na página é a etapa lenta de um arquivo grande, porque todo o arquivo vai para a memória da guia. Esse é o motivo do limite de 500 MB: além disso, uma guia começa a falhar de maneiras mais difíceis de explicar do que um limite declarado. Se você estiver trabalhando com um arquivo maior que esse, aparando-o primeiro com o aparador de vídeo geralmente é mais rápido do que lutar contra o limite, e O guia de corte Cobre porque esse corte também é quase gratuito.
O que acontece quando um vídeo tem mais de uma faixa de áudio?
Uma faixa é escolhida para você e as outras são descartadas sem comentários. Vale a pena saber porque é uma falha silenciosa e não um fracasso.
Eu testei com um arquivo com dois fluxos de áudio, uma faixa estéreo de 128 kbps e uma mono de 64 kbps, que é aproximadamente a forma de uma gravação com um microfone de câmera e um microfone de lapela separado. A extração produziu um único fluxo, o estéreo de 128 Kbps, 950 KB, sem mencionar que uma segunda faixa existia.
A seleção não é aleatória. Regras de seleção de fluxo documentadas Escolha o fluxo que ele julga melhor, o que para áudio significa a contagem mais alta de canais, então você geralmente obtém o que queria. Mas se a faixa mono silenciosa foi o áudio da entrevista e a estéreo foi o ruído da câmera, você entendeu a coisa errada e nada lhe diz.
Os arquivos de várias faixas são incomuns fora dos fluxos de trabalho profissionais, e quase nada de um telefone ou gravador de tela tem mais de um fluxo de áudio. Se você estiver trabalhando com imagens de uma sessão real, verifique a lista de streams antes de extrair e espere usar o FFmpeg diretamente com um explícito -map 0:a:1 Quando você precisa da segunda faixa.
Você deve extrair o áudio ou converter o vídeo inteiro?
Extraia, se o que você quer é o som. As duas operações não são alternativas e as pessoas buscam regularmente o que é errado.
Converter um vídeo para MP3 é uma frase que aparece em milhões de pesquisas por mês e descreve uma operação que ninguém deseja. Isso implica decodificar e descartar a imagem, decodificar o áudio e recodificá-lo, o que é muito trabalhoso chegar a uma versão pior de algo que já estava lá. o conversor de vídeo Existe para o caso em que você deseja um vídeo no final, em um formato que algo será reproduzido. Quando você deseja áudio, a extração é a operação e o caminho da cópia significa que também é barato.
A tabela de decisão é curta:
| O que você quer | usar | custar |
|---|---|---|
| A trilha sonora como um arquivo | Extrato para M4A | nada, stream copiado |
| A trilha sonora de um editor ou transcritor | Extrair para wav | Tamanho apenas |
| A trilha sonora em hardware antigo | Extrair para mp3 | uma geração |
| um vídeo menor, imagem incluída | compressor de vídeo | Depende do CRF, veja O guia de compressão |
| O mesmo vídeo em um formato que reproduz | conversor de vídeo | Muitas vezes um remux, então nada |
O padrão em todas as cinco linhas é aquele que vale a pena: pergunte se a operação requer uma nova codificação e prefira a que não precisa.
O que é que a execução disso no navegador muda?
Para onde vai a gravação, o que para o áudio geralmente é a questão inteira.
O extrator executa o FFmpeg compilado para WebAssembly dentro da página. O vídeo é lido do disco na memória da guia, o fluxo de áudio é retirado e o resultado é devolvido como download. Nenhuma solicitação carrega o arquivo, nada está enfileirado em um servidor e nenhuma cópia existe em nenhum lugar para que alguém se esqueça de excluir.
O extrato de pessoas de áudio é principalmente do tipo que faz isso. Reuniões gravadas, palestras, entrevistas, consultas, ligações com um advogado ou médico, vozes com coisas que você não postaria. A alternativa convencional é fazer o upload da gravação para um site sobre o qual você não sabe nada, em troca de uma operação que no caminho da cópia é um contêiner reescrever sua própria máquina termina em menos de um segundo.
A negociação é o limite de 500 MB e o fluxo de trabalho de um arquivo por vez, porque uma guia do navegador tem menos memória que um servidor e nenhuma fila. Para uma única gravação, que é para isso quase sempre, esse é um limite que você não alcançará e uma garantia de privacidade de que não conseguirá outra maneira.



