LIBFAAC não pode reamostrar canais

2

Estou usando avconv para converter arquivos de vídeo em MP4, mas sempre que tento codificar arquivos com 6 ou 8 canais em 2 canais usando libfaac , recebo essas mensagens de erro:

Can not resample 8 channels @ 44100 Hz to 2 channels @ 44100 Hz

( EDITAR : a saída completa das mensagens pode ser encontrada aqui: link )

Estes são os codecs que instalamos para avconv : link

E este é o comando que estou executando:

avconv -y -i input.mp4 -vcodec libx264 -bufsize 20M -maxrate 4000k -threads 12 -same_quant -acodec libfaac -ac 2 -ar 44100 -ab 128k output.mp4

Estou fazendo algo errado?

Ou há alguma alternativa para libfaac , que irá reanalisar 8 canais em 2 canais?

Eu preciso ser capaz de fazer isso a partir de uma linha de comando no meu servidor Ubuntu 12.04.

    
por Jimmery 11.01.2013 / 15:37

1 resposta

4

Primeiro de tudo, se você ainda não o fez, confira este guia de codificação do ffmpeg h.264 - aplica-se também ao avconv, apenas mude todas as instâncias de ffmpeg para avconv . Além disso, considere a atualização para uma versão mais recente do avconv ou ffmpeg - já que você está no Ubuntu, você pode usar o este PPA , ou compile você mesmo (esta última opção lhe dará acesso a fdk_aac , que é um codificador AAC muito melhor que o FAAC).

A menos que você saiba exatamente o que está fazendo & tem um motivo específico, você provavelmente não deve usar -bufsize 20M -maxrate 4000k -threads 12 -same_quant . Na verdade, passando pela entrada nesse pastebin, provavelmente você deve usar apenas o -codec:v copy , que não toca no fluxo de vídeo.

Quanto ao seu problema declarado ... Eu não acho que o libfaac é o seu problema. Olhe aqui (do seu pastebin):

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from \'/var/www/up/up50eefce404e4f.mp4\':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isomavc1mp42
    creation_time   : 2007-12-08 19:28:08
  Duration: 00:46:47.64, start: 0.000000, bitrate: 308 kb/s
    Stream #0.0(und): Audio: aac, 44100 Hz, stereo, s16, 111 kb/s
    Metadata:
      creation_time   : 2007-12-08 19:28:08
    Stream #0.1(und): Video: h264 (Baseline), yuv420p, 320x240 [PAR 1:1 DAR 4:3], 195 kb/s, 11.99 fps, 11.99 tbr, 11988 tbn, 23976 tbc
    Metadata:
      creation_time   : 2007-12-08 19:28:11

O FFmpeg acha que seu áudio de entrada é estéreo. Muito mais tarde:

Input stream #0:0 frame changed from rate:44100 fmt:s16 ch:2 to rate:44100 fmt:s16 ch:8
Resampling output channel count must be 1 or 2 for mono input; 1, 2 or 6 for stereo input; or N for N channel input.
Can not resample 8 channels @ 44100 Hz to 2 channels @ 44100 Hz

O fluxo de vídeo também está causando muitos erros. Eu suspeito que sua entrada pode estar corrompida.

É possível que o seguinte comando funcionará:

avconv -ac 8 -i input.mp4 -c:v copy -c:a libfaac -b:a 128k -ac 2 output.mp4

-ac define o número de canais de áudio: se o fluxo do AAC não estiver corrompido, é possível que o formato do contêiner esteja fornecendo dados incorretos para o avconv e colocando -ac 8 antes do input substitui a configuração fornecida pelo contêiner MP4 (e colocando -ac 2 antes que a saída diga ao ffmpeg para enviar para 2 canais de áudio).

    
por 11.01.2013 / 19:04