Would like to change audio codec, but keep video settings with ffmpeg
I have a video for which I'd like to convert the audio codec to AAC 320 kbps / 44.100 kHz. What would I use for ffmpeg switches such that all the video settings and codec remain the same, but only the audio codec and settings change?
Here's my 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
Many thanks in advance! One thing with ffmpeg I've never been able to grok is how to just "tweak" files without having to regurgitate every little setting for things you don't want changed.
Solution 1:
An aggregation of Ehsan's answer with fletom's comment that works for me, thanks to both.
ffmpeg -i input.avi -acodec mp3 -vcodec copy out.avi
Solution 2:
Hard to judge what you are doing, since the ffmpeg command was a bit garbled in your post.
To replace an audio track:
ffmpeg -i test.avi -i normalized.mp3 -map 0:0 -map 1:0 -vcodec copy -acodec copy new_test.avi
More information about the above parameters is found in: FFmpeg Documentation.
Solution 3:
If you just want to change the audio and/or video codec(s) you could just add them as parameters like so:
Just change the audio codec to mp3 (what ever the original codec was)
ffmpeg -i input.avi -vcodec copy -acodec mp3 out.avi
Just change the video codec to h264
ffmpeg -i input.avi -vcodec h264 out.avi
It's good to note that ffmpeg must support encoding of the new codec. See https://stackoverflow.com/questions/3377300/what-are-all-codecs-supported-by-ffmpeg