Gostaria de alterar o codec de áudio, mas mantenha as configurações de vídeo com ffmpeg

26

Eu tenho um vídeo para o qual gostaria de converter o codec de áudio em AAC 320 kbps / 44.100 kHz. O que eu usaria para os comutadores ffmpeg, de modo que todas as configurações de vídeo e codec permaneçam iguais, mas apenas o codec e as configurações de áudio mudam?

Aqui está o meu vídeo:

$ ffmpeg -i Winnipeg.rb\ Scala-Talk.mov 
FFmpeg version SVN-r25375, Copyright (c) 2000-2010 the FFmpeg developers
  built on Oct  6 2010 13:02:41 with gcc 4.2.1 (Apple Inc. build 5664)
  configuration: --enable-libmp3lame --enable-shared --disable-mmx --arch=x86_64
  libavutil     50.32. 2 / 50.32. 2
  libavcore      0. 9. 1 /  0. 9. 1
  libavcodec    52.92. 0 / 52.92. 0
  libavformat   52.80. 0 / 52.80. 0
  libavdevice   52. 2. 2 / 52. 2. 2
  libavfilter    1.48. 0 /  1.48. 0
  libswscale     0.12. 0 /  0.12. 0

Seems stream 0 codec frame rate differs from container frame rate: 2000.00 (2000/1) -> 10.00 (10/1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Winnipeg.rb Scala-Talk.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
  Duration: 01:10:53.00, start: 0.000000, bitrate: 283 kb/s
    Stream #0.0(eng): Video: h264, yuv420p, 800x598, 94 kb/s, 10 fps, 10 tbr, 1k tbn, 2k tbc
    Stream #0.1(eng): Audio: adpcm_ima_qt, 22050 Hz, 1 channels, s16
    Stream #0.2(eng): Audio: adpcm_ima_qt, 22050 Hz, 1 channels, s16
At least one output file must be specified

Muito obrigado antecipadamente! Uma coisa com o ffmpeg que eu nunca consegui entender é como "ajustar" os arquivos sem precisar regurgitar todas as pequenas configurações para coisas que você não quer que sejam alteradas.

Craig Tataryn
fonte
O áudio (assim como o vídeo) parece ter uma qualidade bastante baixa. Observe que, na verdade, você não aumentará a qualidade do áudio alterando o formato, aumentando a taxa de amostragem e aumentando a taxa de bits.
Force Flow

Respostas:

34

Uma agregação da resposta de Ehsan com o comentário de fletom que funciona para mim, graças a ambos.

ffmpeg -i input.avi -acodec mp3 -vcodec copy out.avi
igorushi
fonte
apenas para auto-referência, pois eu sempre esqueço esta -vcodec copyparte
igorushi
2
Você pode expandir um pouco sua resposta para explicá-la? Obrigado.
Fixer1234
2
-i input.aviespecifica o arquivo que você deseja converter. out.avié o arquivo convertido. -acodec mp3diz para converter o fluxo de áudio para mp3 enquanto o grava no arquivo de saída. vcodec copydiz apenas copiar o fluxo de vídeo no arquivo de saída sem alterá-lo.
Wodin
8

Difícil julgar o que você está fazendo, já que o comando ffmpeg foi um pouco distorcido em sua postagem.

Para substituir uma faixa de áudio:

ffmpeg -i test.avi -i normalized.mp3 -map 0:0 -map 1:0 -vcodec copy -acodec copy new_test.avi

Mais informações sobre os parâmetros acima são encontradas em: FFmpeg Documentation .

harrymc
fonte
1
Obrigado. Isso resolveu meu problema. Quando executo, ffmpeg -i old.mkv -i onlySound.m4a out.mkva operação demora muito mais. Por que isso é soo?
Zeta.Investigator
6

Se você quiser apenas alterar o (s) codec (s) de áudio e / ou vídeo, basta adicioná-los como parâmetros da seguinte forma:

Apenas mude o codec de áudio para mp3 (seja qual for o codec original)

ffmpeg -i input.avi -acodec mp3 out.avi

Basta alterar o codec de vídeo para h264

ffmpeg -i input.avi -vcodec h264 out.avi

É bom observar que o ffmpeg deve suportar a codificação do novo codec. Consulte /programming/3377300/what-are-all-codecs-supported-by-ffmpeg

Ehsan88
fonte
5
Isso funcionou para mim, mas eu precisava adicioná -vcodec copy-lo para impedir que ele tentasse transcodificar meu vídeo no h.264. Não sei por que ele fez isso por padrão.
fletom 14/01/16
-1

Por que você não usa o Handbrake, que permite manter o vídeo e alterar o áudio, e é uma interface gráfica para o FFmpeg e funciona como um encanto.

Benny
fonte
3
O HandBrake, na verdade, não pode fazer isso; ele pode fazer uma cópia simples dos fluxos de áudio ou legenda, mas sempre recodifica o vídeo.
precisa