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

Cra*_*ryn 41 ffmpeg

我有一个视频,我想将音频编解码器转换为 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
Run Code Online (Sandbox Code Playgroud)

提前谢谢了!对于 ffmpeg,我从来无法理解的一件事是如何“调整”文件而不必为您不想更改的内容重新设置每一个小设置。

igo*_*shi 63

感谢两者,Ehsan 的回答与 fletom 的评论对我有用。

ffmpeg -i input.avi -acodec mp3 -vcodec copy out.avi
Run Code Online (Sandbox Code Playgroud)

  • `-i input.avi` 指定要转换的文件。`out.avi` 是转换后的文件。`-acodec mp3` 表示在将音频流写入输出文件时将其转换为 mp3。`vcodec copy` 表示只将视频流复制到输出文件中而不更改它。 (4认同)
  • 你能稍微扩展一下你的答案来解释吗?谢谢。 (3认同)
  • 仅供参考,因为我总是忘记这个`-vcodec copy` 部分 (2认同)

har*_*ymc 8

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

要替换音轨:

ffmpeg -i test.avi -i normalized.mp3 -map 0:0 -map 1:0 -vcodec copy -acodec copy new_test.avi
Run Code Online (Sandbox Code Playgroud)

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


Ehs*_*n88 8

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

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

ffmpeg -i input.avi -vcodec copy -acodec mp3 out.avi
Run Code Online (Sandbox Code Playgroud)

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

ffmpeg -i input.avi -vcodec h264 out.avi
Run Code Online (Sandbox Code Playgroud)

值得注意的是,ffmpeg 必须支持新编解码器的编码。见/sf/ask/236411031/

  • 这对我有用,但我需要添加 `-vcodec copy` 以防止它尝试将我的视频转码为 h.264。不知道为什么它默认这样做。 (6认同)