FFMPEG - .Aac malformado rastreia o som PERFECT no Movie Studio, mas retorna o erro “Input buffer exhausted before END element found” ao tentar fazer o mux

1

Eu sou um usuário ffmpeg novato tentando migrar o vídeo h.264 com uma faixa secundária de comentários .wav, sem recodificar nada do lado do vídeo. O áudio do vídeo está em .aac.

Eu uso o Bandicam para gravar imagens; existe uma configuração para gravar um arquivo .wav separado (o comentário) simultaneamente.

Quando eu inicialmente tentei descobrir isso, eu abri um tópico (link na parte inferior) e fiquei muito feliz com a utilidade do usuário que respondeu. A resposta pareceu satisfazer minha pergunta completamente. Agora, no entanto, tenho um novo problema e gostaria de perguntar sobre isso abertamente.

Algumas gravações estão retornando o erro que mencionei no cabeçalho quando tento colocar o comentário de volta no vídeo. "Buffer de entrada esgotado antes do elemento END ser encontrado" é o erro. Os arquivos finalizam o muxing, mas se o erro acontecer o suficiente, ocorrerá uma dessincronização visível de vídeo / áudio no vídeo. Atualizei meus executáveis do FFMPEG para as compilações mais recentes, e a alma útil anterior apontou que eu poderia ter "fluxos de áudio malformados".

Mas, novamente, (1) não são todos, apenas alguns, e (2) os dois fluxos de áudio (áudio e comentários de gravação originais) soam perfeitos quando carrego o arquivo .mp4 no Movie Studio. Então estou tentado a dizer que ffmpeg / avanti é o culpado.

Independentemente disso, não tenho ideia de qual poderia ser a solução. Por favor, ajude se você tiver alguma idéia.

Aqui está o tópico original, para sua referência.

    
por Hadrian 12.09.2016 / 05:59

1 resposta

3

O áudio AAC é composto de quadros. Cada quadro contém vários tipos de elementos. O último elemento em cada quadro é o elemento END. A mensagem de erro recebida indica que o FFmpeg pesquisou o quadro, mas não encontrou o elemento END. Portanto, ele ignora esse quadro durante o remuxo e, eventualmente, interrompe a sincronização, se muitos deles ocorrerem. Então, aqui estão algumas tentativas de contornar isso.

# 1 Preservar registros de data e hora originais

ffmpeg -copyts -i video.mp4 -i audio.wav -map 0 -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac video-new.mp4

# 2 Ignore os erros de stream e preserve os timestamps originais

ffmpeg -copyts -err_detect ignore_err -i video.mp4 -i audio.wav -map 0 -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac video-new.mp4

# 3 Codifique o áudio do vídeo, mas preserve lacunas devido a quadros corrompidos

ffmpeg -i video.mp4 -i audio.wav -filter_complex "[0:a]aresample=async=1:min_comp=0.02[a]" -map 0:v -map "[a]" -map 1:a -c:v copy -c:a:0 aac -c:a:1 aac video-new.mp4
    
por 12.09.2016 / 07:48