想更改音频编解码器,但使用ffmpeg保留视频设置


27

我有一个想要将音频编解码器转换为AAC 320 kbps / 44.100 kHz的视频。我将如何使用ffmpeg开关,以使所有视频设置和编解码器保持相同,但仅音频编解码器和设置会更改?

这是我的视频:

$ 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

提前谢谢了!使用ffmpeg我从未能够了解的一件事是如何“调整”文件而不必为不需要更改的内容重新设置每个小设置。


音频(以及视频)的质量似乎很低。请注意,您实际上不会通过更改格式,增加采样率和增加比特率来提高音频质量。
力流2010年

Answers:


35

得益于两者,Ehsan的答案与fletom的评论的汇总对我有用。

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

仅供参考,因为我总是忘记了这一-vcodec copy部分
igorushi '16

2
您可以扩大答案以解释一下吗?谢谢。
fixer1234

2
-i input.avi指定要转换的文件。out.avi是转换后的文件。-acodec mp3表示将音频流转换为mp3,同时将其写入输出文件。vcodec copy表示仅将视频流复制到输出文件中而不进行更改。
Wodin '16

8

很难判断您在做什么,因为ffmpeg命令在您的帖子中有点乱码。

替换音轨:

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

有关上述参数的更多信息,请参见:FFmpeg文档


1
谢谢。这解决了我的问题。当我运行时,ffmpeg -i old.mkv -i onlySound.m4a out.mkv该操作花费的时间更长。那为什么呢?
Zeta.Investigator

6

如果您只想更改音频和/或视频编解码器,则可以将它们添加为参数,如下所示:

只需将音频编解码器更改为mp3(无论原始编解码器是什么)

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

只需将视频编解码器更改为h264

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

值得一提的是,ffmpeg必须支持新编解码器的编码。参见/programming/3377300/what-are-all-codecs-supported-by-ffmpeg


5
这对我有用,但是我需要添加-vcodec copy以防止它尝试将我的视频转码为h.264。Dunno为什么默认情况下会这样做。
fletom

-1

您为什么不使用Handbrake,它可以保留视频并更改音频,它是FFmpeg的GUI,它的工作原理很像魅力。


3
实际上,HandBrake无法执行此操作。它可以对音频或字幕流进行简单的复制,但始终会对视频进行重新编码。
evilsoup 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.