Хотелось бы поменять аудио кодек, но сохранить настройки видео с помощью ffmpeg

27

У меня есть видео, для которого я хотел бы преобразовать аудиокодек в AAC 320 кбит / с / 44,100 кГц. Что бы я использовал для переключателей 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, которую мне никогда не удавалось поймать, это то, как просто «подправить» файлы, без необходимости регургитировать каждую маленькую настройку для вещей, которые вы не хотите менять.

Крейг Татарин
источник
Звук (как и видео) выглядит довольно низкого качества. Обратите внимание, что вы на самом деле не улучшите качество звука, изменив формат, увеличив частоту дискретизации и увеличив битрейт.
Force Flow

Ответы:

35

Совокупность ответа Эсана с комментарием Флетома, который работает для меня, благодаря обоим.

ffmpeg -i input.avi -acodec mp3 -vcodec copy out.avi
igorushi
источник
просто для справки, так как я всегда забываю эту -vcodec copyчасть
igorushi
2
Можете ли вы немного расширить свой ответ, чтобы объяснить это? Благодарю.
fixer1234
2
-i input.aviуказывает файл, который вы хотите конвертировать. out.aviэто преобразованный файл -acodec mp3говорит преобразовать аудиопоток в mp3 при записи его в выходной файл. vcodec copyговорит просто скопировать видеопоток в выходной файл, не меняя его.
Водин
8

Трудно судить о том, что вы делаете, так как команда ffmpeg была немного искажена в вашем посте.

Чтобы заменить звуковую дорожку:

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

Более подробная информация о вышеупомянутых параметрах находится в: FFmpeg Documentation .

harrymc
источник
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 должен поддерживать кодирование нового кодека. См. Https://stackoverflow.com/questions/3377300/what-are-all-codecs-supported-by-ffmpeg

Ehsan88
источник
5
Это сработало для меня, но мне нужно было добавить -vcodec copy, чтобы не пытаться перекодировать мое видео в h.264. Не знаю, почему он сделал это по умолчанию.
Флетом
-1

Почему бы вам не использовать Handbrake, который позволяет сохранить видео и изменить звук, и это графический интерфейс для FFmpeg, и он работает как шарм.

Бенни
источник
3
HandBrake на самом деле не может этого сделать; он может делать простую копию потоков аудио или субтитров, но он всегда перекодирует видео.
evilsoup