Vorrebbe cambiare il codec audio, ma mantenere le impostazioni video con ffmpeg


27

Ho un video per il quale vorrei convertire il codec audio in AAC 320 kbps / 44.100 kHz. Cosa dovrei usare per gli switch ffmpeg in modo tale che tutte le impostazioni video e il codec rimangano uguali, ma cambino solo il codec audio e le impostazioni?

Ecco il mio video:

$ 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

Molte grazie in anticipo! Una cosa con ffmpeg che non sono mai stato in grado di grok è come "modificare" i file senza dover rigurgitare ogni piccola impostazione per cose che non vuoi siano cambiate.


L'audio (così come il video) sembra essere di qualità piuttosto bassa. Nota che non aumenterai effettivamente la qualità dell'audio cambiando formato, aumentando la frequenza di campionamento e aumentando il bitrate.
Force Flow,

Risposte:


35

Un'aggregazione della risposta di Ehsan con il commento di Fletom che funziona per me, grazie ad entrambi.

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

solo per auto-riferimento poiché ho sempre dimenticato questa -vcodec copyparte
igorushi,

2
Puoi espandere leggermente la tua risposta per spiegarla? Grazie.
fixer1234

2
-i input.avispecifica il file che si desidera convertire. out.aviè il file convertito. -acodec mp3dice di convertire il flusso audio in mp3 mentre lo scrive nel file di output. vcodec copydice di copiare semplicemente il flusso video nel file di output senza modificarlo.
Wodin,

8

Difficile giudicare quello che stai facendo, dato che il comando ffmpeg è stato un po 'confuso nel tuo post.

Per sostituire una traccia audio:

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

Ulteriori informazioni sui parametri sopra riportati sono disponibili nella documentazione di FFmpeg .


1
Grazie. Questo ha risolto il mio problema. Quando corro ffmpeg -i old.mkv -i onlySound.m4a out.mkvl'operazione richiede molto più tempo. Perché è così?
Zeta.Investigator,

6

Se vuoi solo cambiare i codec audio e / o video, puoi semplicemente aggiungerli come parametri in questo modo:

Basta cambiare il codec audio in mp3 (qualunque sia il codec originale)

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

Basta cambiare il codec video in h264

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

È bene notare che ffmpeg deve supportare la codifica del nuovo codec. Vedi /programming/3377300/what-are-all-codecs-supported-by-ffmpeg


5
Questo ha funzionato per me, ma ho dovuto aggiungerlo -vcodec copyper evitare che provasse a transcodificare il mio video in h.264. Non so perché lo abbia fatto di default.
Fletom,

-1

Perché non usi il freno a mano che ti permette di mantenere il video e cambiare l'audio ed è una GUI per FFmpeg e funziona come un incantesimo.


3
HandBrake in realtà non può farlo; può fare una semplice copia di flussi audio o di sottotitoli, ma ricodifica sempre il video.
evilsoup,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.