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

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

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

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

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

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

решение1

В зависимости от кодеков, используемых в вашем 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 aac -b:a 160k output.mp4

Если вы хотите изменить только аудио- или только видеокодек, вы можете использовать -c:a copyили -c:v copy, чтобы скопировать тот, который хотите сохранить.

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

Чтобы улучшить качество звука, выберите более высокий битрейт (160k в примере выше).

Как с качеством звука, так и с качеством видео ваши результаты будут зависеть от качества источника. Помните, что с любым исходным источником можно сделать лишь ограниченное количество вещей — в лучшем случае вы получите то же качество, что и у источника. Определенно стоит поэкспериментировать с разными уровнями качества и/или битрейтами.

дополнительная информация о кодировании FFMPEG aac(Я имел в виду «родной» кодировщик, описанный на сайте ffmpeg).


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

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

Однако для фона качество CD имеет частоту дискретизации 44100 Гц; типичное видео использует 48000 Гц.

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

Информацию о частоте дискретизации исходного материала можно получить с помощью ffmpeg -iкоманды, которую я предложил выше.

Связанный контент