Преобразование FLV в MP4 с использованием FFMPEG и сохранение качества

26

Я пытаюсь использовать ffmpeg для конвертации моих файлов FLV в MP4 для воспроизведения их на устройствах iOS, но конвертированное видео имеет гораздо худшее качество, чем оригинальное.

Вот команда, которую я использую:

ffmpeg -i input.flv -ar 22050 output.mp4

Я был бы очень признателен, если бы кто-нибудь смог предоставить мне лучшие настройки для конвертации в flv в mp4.


источник

Ответы:

42

В зависимости от кодеков, используемых в вашем FLV, вы можете просто обернуть его в контейнер mp4. Вам понадобится H.264или MPEG4 simple profileвидео и AACаудио. Вы можете узнать некоторую информацию о вашем исходном файле сffmpeg -i input.flv

Я не уверен, достаточно ли просто иметь H.264 / MPEG4 Simple + AAC или есть определенные опции для поддерживаемых кодеков. Это достаточно легко проверить:

Попробуйте использовать

ffmpeg -i input.flv -c copy -copyts output.mp4

-copytsэто copy timestampsэто поможет аудио синхронизации.

Если это не сработает, попробуйте форсировать аудио и видео кодеки. Это перекодирует файл:

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4

Чтобы улучшить качество видео, вы можете использовать более низкое значение CRF, например, до 18. Чтобы получить файл меньшего размера, используйте более высокий CRF, но учтите, что это ухудшит качество.

Чтобы улучшить качество звука, используйте более высокое значение качества. Для FAAC 100по умолчанию.


Вот несколько соображений по поводу команды ffmpeg, предложенной в этом вопросе.

-arотносится к частоте дискретизации звука. Я бы порекомендовал не возиться с этим, пока вы не разберетесь лучше Если вы хотите играть с аудиокодированием, отрегулируйте битрейт (например, -b:a 128k) и позвольте кодировщику выбрать, что делать на основании этого.

Если вы в конечном итоге идти по этой дороге ...

Качество CD составляет 44100Гц; типичное видео использует 48000 Гц.

Вы можете заметить, что 22050 в исходном примере вопроса составляет 1/2 частоты выборки качества CD. если вы конвертируете материал CD, это хороший выбор. Если вы начинаете с источника 48 кГц (что, вероятно, и есть; опять же, это гораздо чаще, чем 44100 в видеофайлах), я бы использовал вместо этого 24 кГц. Это, вероятно, не будет иметь большого значения, но может звучать немного лучше и потреблять немного меньше ресурсов ЦП для преобразования.

Дэн Приттс
источник
перечитывая мой ответ ... В дополнение к командной строке, которую я дал выше, вы можете копировать только видео или только аудио, и перекодировать другой. например ... "ffmpeg -i input.foo -vcodec copy -acodec libfaac -ab 128k -copyts output.mp4" это скопирует видеопоток и перекодирует аудио в AAC. У libfaac нет хорошего качества, но он работает.
Дэн Притц
Относительно команды форсирования аудио / видео кодеков: по состоянию на сентябрь 2019 года я обнаружил, что ffmpegпрекращена поддержкаlibaac . В этом вопросе предлагается использовать ffmpegсобственный кодер AAC via -c:a aac или кодек Fraunhofer FDK AAC via -c:a libfdk_aac (который требует компиляции ffmpegс поддержкой libfdk_aac).
Аресник