AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1885778
Accepted
Keith Stein
Keith Stein
Asked: 2025-03-13 12:18:13 +0800 CST2025-03-13 12:18:13 +0800 CST 2025-03-13 12:18:13 +0800 CST

A trilha de áudio transcodificada para AAC com FFMPEG não reproduz

  • 772

Até agora, já transcodifiquei dezenas, se não centenas de arquivos com FFMPEG, mas tenho um arquivo em particular que está me dando problemas e não consigo descobrir o porquê.

Para testar, estou usando um trecho de 10 segundos do meu arquivo original (eu o carregaria como parte desta pergunta se isso fosse um recurso aqui). Este arquivo de teste de origem se parece com isto:

Input #0, matroska,webm, from 'Trimmed.mkv':
HD.MA.5.1-RARBG
    ENCODER         : Lavf61.9.106
  Duration: 00:00:10.26, start: 0.000000, bitrate: 33873 kb/s
  Chapters:
    [[excluded for relevance]]
  Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn
    Metadata:
      DURATION        : 00:00:10.260000000
  Stream #0:1(eng): Audio: dts (dca) (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit) (default)
    Metadata:
      DURATION        : 00:00:10.005000000
  Stream #0:2(eng): Audio: dts (dca) (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s
    Metadata:
      DURATION        : 00:00:10.005000000
  Stream #0:3(eng): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      DURATION        : 00:00:10.016000000

Posso abrir o arquivo acima no player VLC e confirmar que cada um dos fluxos de áudio (e o fluxo de vídeo) são reproduzidos corretamente. No entanto, muitos players não são tão compatíveis quanto o VLC (não têm tantos codecs incorporados), e preciso oferecer suporte a mais do que isso. No meu caso, preciso oferecer suporte ao Windows Media Player integrado, que (pelo menos no meu computador) não pode reproduzir nenhum dos dois primeiros fluxos de áudio (não pode reproduzir 0:1 dts (dca) (DTS-HD MA)ou 0:2 dts (dca) (DTS)). (Tecnicamente, preciso oferecer suporte à reprodução do Chrome, mas ambos os aplicativos parecem ter o mesmo problema aqui, e o Windows Media Player é mais fácil para eu testar.)

Consegui contornar isso em todos os casos anteriores duplicando o fluxo que eu quero e transcodificando a cópia como AAC. Para esse fim, usei o seguinte comando:

ffmpeg -i Trimmed.mkv -map 0:v -map 0:a -map 0:a:0 -c copy -c:a:3 aac Converted.mkv

Eu copio o fluxo de vídeo e todos os fluxos de áudio, e então mapeio o primeiro fluxo de áudio uma segunda vez. Eu defino o codec para todos os fluxos para 'copiar', mas então sobrescrevo esse fluxo de áudio final para usar AAC.

A saída da execução desse comando é a seguinte:

[aost#0:4 @ 000001f6a555fb40] Multiple -codec/-c/-acodec/-vcodec/-scodec/-dcodec options specified for stream 4, only the last option '-codec:a:3 aac' will be used.
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #0:2 -> #0:2 (copy)
  Stream #0:3 -> #0:3 (copy)
  Stream #0:1 -> #0:4 (dts (dca) -> aac (native))
Press [q] to stop, [?] for help
[aac @ 000001f6a591c240] Using a PCE to encode channel layout "5.1(side)"
Output #0, matroska, to 'Converted.mkv':
HD.MA.5.1-RARBG
    encoder         : Lavf61.9.106
  Chapters:
    [[excluded for relevance]]
  Stream #0:0(eng): Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 23.98 tbr, 1k tbn
    Metadata:
      DURATION        : 00:00:10.260000000
  Stream #0:1(eng): Audio: dts (DTS-HD MA) ([1] [0][0] / 0x2001), 48000 Hz, 5.1(side), s32p (24 bit) (default)
    Metadata:
      DURATION        : 00:00:10.005000000
  Stream #0:2(eng): Audio: dts (DTS) ([1] [0][0] / 0x2001), 48000 Hz, 5.1(side), fltp, 1536 kb/s
    Metadata:
      DURATION        : 00:00:10.005000000
  Stream #0:3(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 192 kb/s
    Metadata:
      DURATION        : 00:00:10.016000000
  Stream #0:4(eng): Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, 5.1(side), fltp, 394 kb/s (default)
    Metadata:
      encoder         : Lavc61.32.101 aac
      DURATION        : 00:00:10.005000000
[out#0/matroska @ 000001f6a4be8840] video:37636KiB audio:5207KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.053611%
frame=  244 fps=203 q=-1.0 Lsize=   42866KiB time=00:00:10.00 bitrate=35098.3kbits/s speed=8.32x
[aac @ 000001f6a591c240] Qavg: 7222.731

Novamente, posso abrir o 'Converted.mkv' resultante no VLC e confirmar que todas as quatro trilhas de áudio são reproduzidas. Mas quando testo esse novo arquivo no Windows Media Player, esse novo, 4º, fluxo AAC fica silencioso. É diferente dos dois primeiros fluxos não suportados, que não consigo selecionar. Esse novo fluxo pode ser selecionado, ele fica apenas silencioso.

O que poderia estar acontecendo que faria com que essa faixa não tocasse corretamente? Por onde eu começaria a depurar isso?

audio
  • 1 1 respostas
  • 65 Views

1 respostas

  • Voted
  1. Best Answer
    Keith Stein
    2025-03-15T04:06:47+08:002025-03-15T04:06:47+08:00

    Acho que consegui identificar especificamente o que está causando o problema e uma solução quase perfeita.

    Notei algo em minhas horas de depuração e pesquisa. Na minha pergunta original, observe a saída produzida para esse novo fluxo de áudio:

    Stream #0:4(eng): Audio: aac (LC) ([255][0][0][0] / 0x00FF), 48000 Hz, 5.1(side), fltp, 394 kb/s (default)
    

    Parece bom, certo? No entanto , se eu então reanalisar esse mesmo arquivo usando ffprobe, obtenho o seguinte:

    Stream #0:4(eng): Audio: aac (LC), 48000 Hz, 6 channels, fltp (default)
    

    Observe que os dados do layout do canal parecem estar totalmente ausentes. Embora o ffmpeg pense que está codificando corretamente com 5.1(lado), parece que isso pode não estar acontecendo corretamente. Houve uma dica de que algo pode estar errado com o layout do canal quando eu estava transcodificando também. Uma pequena mensagem informativa:

    Using a PCE to encode channel layout "5.1(side)"
    

    Pesquisar mais sobre isso me levou a usar um PCE para codificar o layout do canal 5.1 (lateral) :

    O AAC usa um sinalizador de 4 bits para armazenar o layout do canal, então há 16 layouts de canal possíveis, 5.1(side) não é um deles. Mas se esse valor for definido como 0, o layout do canal é explicitamente descrito no PCE (Program Config Element).

    Minha teoria é que esse bloco PCE não está sendo escrito corretamente ou que o Windows Media Player (e o media player integrado ao iOS) não sabe como manipular corretamente os dados que estão sendo lidos.

    Mantendo essa suposição, decidi tentar converter o layout 5.1(lateral) para apenas 5.1, que é um dos 16 layouts de canais predefinidos suportados pelo AAC. Para fazer isso, usei a resposta para uma pergunta semelhante, Correctly mapping 5.1 to Opus :

    A especificação Opus permite apenas o 5.1layout ( FL FR FC LFE BL BR). A solução mais fácil é usar o channelmap-filter para mapear os dois alto-falantes laterais para os alto-falantes traseiros.

    -filter:a "channelmap=FL-FL|FR-FR|FC-FC|LFE-LFE|SL-BL|SR-BR:5.1"
    

    Quando adicionei o acima channelmapao meu comando original, o arquivo resultante pôde ser reproduzido em todos os meus dispositivos (incluindo iOS, se eu alterasse o contêiner para .mp4).

    • 1

relate perguntas

  • áudio mono em audioSprite / ffmpeg tem a mesma taxa de bits que estéreo

  • Dispositivo Bluetooth Bose Soundlink Revolve ligando irritantemente automaticamente na inicialização do Windows 10

  • Como posso obter o valor LUF final com FFmpeg?

  • Codec e configuração para saída ffmpeg de taxa de bits mais baixa

  • O fone de ouvido bluetooth Sony WH-1000XMX2 não consegue se conectar corretamente automaticamente

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve