
Когда я это использую, качество выглядит неплохо.
ffmpeg -same_quant -i video.mp4 video.avi
В ffmpeg
документации написано: «Обратите внимание, что это НЕ ТО ЖЕ КАЧЕСТВО. Не используйте эту опцию, если вы не уверены, что она вам нужна».
Получу ли я -same_quant
наилучшее качество или есть вариант, который обеспечивает такое же качество, как и исходный, и который более рекомендован?
решение1
(адаптировано из комментариев выше)
В зависимости от используемых кодеков (некоторые кодеки несовместимы с некоторыми контейнерами), вы всегда можете просто скопировать потоки ( -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
, но это не даст никакого эффекта, так как вы не перекодируете потоки.)
решение2
Под FreeBSD 8. 2 я попробовал -codec copy, но я также получил сообщение unknown decoded. После проб и ошибок я нашел тот, который работает под FreeBSD:
ffmpeg -i video.mp4 -vcodec copy video.avi