Voudrait changer le codec audio, mais conserver les paramètres vidéo avec ffmpeg

27

J'ai une vidéo pour laquelle je voudrais convertir le codec audio en AAC 320 kbps / 44.100 kHz. Que devrais-je utiliser pour les commutateurs ffmpeg de sorte que tous les paramètres vidéo et le codec restent les mêmes, mais seuls le codec audio et les paramètres changent?

Voici ma vidéo:

$ 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

Merci d'avance! Une chose avec ffmpeg que je n'ai jamais pu comprendre est de savoir comment "modifier" des fichiers sans avoir à régurgiter chaque petit paramètre pour des choses que vous ne voulez pas changer.

Craig Tataryn
la source
L'audio (ainsi que la vidéo) semble être de qualité assez faible. Notez que vous n'augmenterez pas réellement la qualité de l'audio en changeant de format, en augmentant la fréquence d'échantillonnage et en augmentant le débit binaire.
Force Flow

Réponses:

35

Une agrégation de la réponse d'Ehsan avec le commentaire de Fletom qui fonctionne pour moi, grâce aux deux.

ffmpeg -i input.avi -acodec mp3 -vcodec copy out.avi
igorushi
la source
juste pour référence car j'oublie toujours cette -vcodec copypartie
igorushi
2
Pouvez-vous développer un peu votre réponse pour l'expliquer? Merci.
fixer1234
2
-i input.avispécifie le fichier que vous souhaitez convertir. out.aviest le fichier converti. -acodec mp3dit de convertir le flux audio en mp3 tout en l'écrivant dans le fichier de sortie. vcodec copydit de simplement copier le flux vidéo dans le fichier de sortie sans le changer.
Wodin
8

Difficile de juger ce que vous faites, car la commande ffmpeg était un peu brouillée dans votre message.

Pour remplacer une piste audio:

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

Plus d'informations sur les paramètres ci-dessus se trouvent dans: Documentation FFmpeg .

harrymc
la source
1
Merci. Cela a résolu mon problème. Quand je lance, ffmpeg -i old.mkv -i onlySound.m4a out.mkvl'opération prend beaucoup plus de temps. Pourquoi est-ce si bon?
Zeta.Investigator
6

Si vous voulez simplement changer le (s) codec (s) audio et / ou vidéo, vous pouvez simplement les ajouter comme paramètres comme ceci:

Il suffit de changer le codec audio en mp3 (quel que soit le codec d'origine)

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

Changez simplement le codec vidéo en h264

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

Il est bon de noter que ffmpeg doit prendre en charge l'encodage du nouveau codec. Voir /programming/3377300/what-are-all-codecs-supported-by-ffmpeg

Ehsan88
la source
5
Cela a fonctionné pour moi, mais je devais l'ajouter -vcodec copyafin de l'empêcher d'essayer de transcoder ma vidéo en h.264. Je ne sais pas pourquoi il a fait ça par défaut.
fletom
-1

Pourquoi n'utilisez-vous pas Handbrake qui permet de conserver la vidéo et de modifier l'audio et c'est une interface graphique pour FFmpeg et cela fonctionne comme un charme.

Benny
la source
3
HandBrake ne peut vraiment pas faire cela; il peut faire une simple copie de flux audio ou de sous-titres, mais il réencode toujours la vidéo.
evilsoup