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 libfaac
recebo estas 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:http://pastebin.com/UXGrBy1D)
Estes são os codecs para os quais instalamos avconv
:http://pastebin.com/hyQrqXqW
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 existe alguma alternativa para libfaac
a qualvaireamostrar 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.
Responder1
Em primeiro lugar, se ainda não o fez, confiraeste guia de codificação ffmpeg h.264- também se aplica ao avconv, basta alterar cada instância de ffmpeg
para avconv
. Além disso, considere atualizar para uma versão mais recente do avconv ou ffmpeg - como você está no Ubuntu, você pode usareste PPA, oucompile você mesmo(esta última opção lhe dará acesso afdk_aac, que é um codificador AAC muito melhor que FAAC).
A menos que você saiba exatamente o que está fazendo e tenha um motivo específico, provavelmente não deveria usar -bufsize 20M -maxrate 4000k -threads 12 -same_quant
. Na verdade, seguindo a entrada desse pastebin, você provavelmente deveria apenas usar -codec:v copy
, que não afetará o fluxo de vídeo.
Quanto ao seu problema declarado ... não acho que libfaac seja o seu problema. Veja 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 o á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 stream de vídeo também está apresentando muitos erros. Suspeito que sua entrada possa estar corrompida.
Isso épossívelque 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:seo fluxo AAC não está corrompido, é possível que o formato do contêiner esteja apenas fornecendo dados incorretos para avconv e colocando -ac 8
antes da entrada substitui a configuração fornecida pelo contêiner MP4 (e colocando -ac 2
antes da saída diz ao ffmpeg para enviar para 2 canais de áudio) .