Як отримати найкращу якість при перетворенні з mp4 в avi за допомогою ffmpeg?


11

Коли я використовую це, якість виглядає не погано.

ffmpeg -same_quant -i video.mp4 video.avi

У ffmpegдокументації написано: "Зверніть увагу, що це НЕ ІДНЕ ЯКІСТЬ. Не використовуйте цю опцію, якщо ви не знаєте, що вам це потрібно".

Чи можу я отримати -same_quantнайкращу якість або є варіант, який надає таку ж якість, що і вхідний і більше рекомендується?


Залежно від використовуваних кодеків (деякі кодеки несумісні з деякими контейнерами), ви завжди можете просто скопіювати потоки ( -codec copy). Це найкращий спосіб уникнути змін якості, оскільки ви не перекодуєте потоки, просто перепакуйте їх в інший контейнер.
njsg

Коли я намагаюся це я отримую: Unknown decoder 'copy'.
sid_com

3
Здається, -codec copyтреба йти після -i video.mp4 - можете спробувати ffmpeg -i video.mp4 -codec copy video.avi? ( -same_quantпрацює і тут, але нічого не робитиме, оскільки це просто копіює потоки)
njsg

Щодо розміщення параметрів командного рядка ffmpeg , див. Документація ffmpeg - 2 Опис : Ось уривок: Як правило, параметри застосовуються до наступного вказаного файлу. Тому порядок важливий, ...
Пітер.О

Дякую! Зараз -codec copyна правильному місці - роботи.
sid_com

Відповіді:


14

(адаптовано з коментарів вище)

Залежно від використовуваних кодеків (деякі кодеки несумісні з деякими контейнерами), ви завжди можете просто скопіювати потоки ( -codec copy). Це найкращий спосіб уникнути змін якості, оскільки ви не перекодуєте потоки, просто перепакуйте їх в інший контейнер.

Маючи справу з аудіо / відео файлами, важливо пам’ятати, що контейнери в основному не залежать від використовуваних кодеків. Ми звикли бачити людей, які посилаються на файли як "AVI video" або "MP4 video", але це контейнери і мало розповідають про те, чи зможе гравець відтворювати потоки, як, крім технічних обмежень (наприклад, У AVI можуть виникнути проблеми з h264 та Ogg Vorbis ), ви можете використовувати будь-який кодек.

-same_quantМабуть, це спосіб сказати ffmpeg, щоб спробувати досягти подібної якості, але як тільки ви перекодуватимете відео (принаймні, з втратними кодеками), у вас немає способу отримати таку ж якість. Якщо ви переймаєтесь якістю, хорошим правилом є уникати перекодування потоків, коли це можливо.

Отже, щоб скопіювати потоки за допомогою ffmpeg, ви зробите:

ffmpeg -i video.mp4 -codec copy video.avi

( Як згадував @ Peter.O , порядок опціонів важливий, тому -codec copyпотрібно куди йти. Ви все ще можете зберегти -same_quant, але це не матиме жодного ефекту, оскільки ви не перекодуєте потоки.)


Ваше рішення працює на мене. Я бачу, що avconvзараз рекомендується замість ffmpegтого, що я використовував.
Faheem Mitha

3

Під FreeBSD 8. 2, я спробував -копіювати код, але мені також невідомо розшифровано повідомлення. Після проб і помилок я виявив той, що працює під FreeBSD:

ffmpeg -i video.mp4 -vcodec copy video.avi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.