Хочеться змінити звуковий кодек, але збережіть налаштування відео за допомогою 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, яке мені ніколи не вдалося зробити, - це просто "налаштувати" файли без необхідності повторювати кожен маленький параметр для речей, які ви не хочете змінити.


Звук (як і відео) здається досить низькою якістю. Зауважте, що ви фактично не підвищуєте якість звуку, змінюючи формат, збільшуючи частоту дискретизації та збільшуючи бітрейт.
Силовий потік

Відповіді:


35

Сукупність відповіді Есана з коментарем флетома, який працює на мене, завдяки обом.

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

тільки для самостійного посилання, оскільки я завжди забуваю цю -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 .


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. Незнаю чому це робив за замовчуванням.
флетом

-1

Чому б не використовувати Handbrake, який дозволяє зберігати відео та змінювати звук, і це GUI для FFmpeg, і він працює як шарм.


3
HandBrake насправді цього не може зробити; він може робити просту копію аудіозаписів або потоків субтитрів, але завжди перекодує відео.
злий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.