ffmpeg конвертировать h.265 в h.264 с безпотерянным качеством

Вопрос или проблема

Я конвертирую h.265 в h.264, но качество на выходе не слишком хорошее, особенно если на экране много деталей, получается очень пикселизировано.
Моя команда приведена ниже. Что я могу добавить/убрать, чтобы сохранить оригинальное качество, но конвертировать в h.264? Также подскажите, пожалуйста, является ли моя команда слишком длинной и есть ли ненужные параметры, вызывающие проблему. Спасибо!

ffmpeg.exe -i “http://StreamUrl location” -hls_allow_cache 1 -map_metadata -1 -threads 2 -map 0:v:0 -map 0:a:0 -map -0:s -codec:v:0 libx264 -pix_fmt yuv420p -preset superfast -crf 20 -b:v 1200000 -maxrate 1200000 -bufsize 2698344 -profile:v high -level 41 -aspect 640:360 -s 1280×720 -sc_threshold 0 -codec:a:0 aac -strict experimental -ac 2 -ab 96000 -hls_time 6 -start_number 0 -hls_list_size 20 -hls_flags delete_segments -fps_mode auto -y C:\temp\temp.m3u8

Правка: Также я сейчас использую этот флаг в начале -err_detect ignore_err.
Есть ли способ заставить ffmpeg игнорировать ошибки ниже и просто продолжать попытки?
Ошибка ввода/вывода
Ошибка открытия входных файлов: Сервер вернул 403 Forbidden (доступ запрещен)

Ответ или решение

Для достижения максимально возможного качества при конвертации видео из формата H.265 в H.264 с помощью FFmpeg, важно правильно настроить параметры кодирования и минимизировать возможные потери качества. Ваш текущий набор параметров можно оптимизировать. Вот более оптимизированный пример команды, который поможет сохранить качество:

ffmpeg -err_detect ignore_err -i "http://StreamUrl location" -map_metadata -1 -threads 2 -map 0:v:0 -map 0:a:0 -map -0:s -c:v libx264 -pix_fmt yuv420p -preset slow -crf 18 -b:v 0 -profile:v high -level 4.1 -aspect 640:360 -s 1280x720 -codec:a aac -b:a 96000 -hls_time 6 -hls_list_size 20 -hls_flags delete_segments -y C:\temp\temp.m3u8

Объяснение параметров:

  1. -err_detect ignore_err: Этот параметр заставляет FFmpeg игнорировать определенные ошибки при чтении/записи, включая ошибки доступа. Однако важно понимать, что игнорирование ошибок может привести к тому, что вы не получите ожидаемое качество выходного файла.

  2. -preset slow: Параметры -preset изменяют скорость кодирования. Более медленный режим (например, slow) может дать лучшее соотношение между качеством и размером файла. Вы можете попробовать veryslow, если время не имеет значения и важнее качество.

  3. -crf 18: Устанавливает уровень вариативной битовой скорости. Значение 18 обычно рассматривается как практически бесстрашный; чем ниже значение, тем выше качество (но и размер файла).

  4. -b:v 0: Это означает, что FFmpeg будет использовать VBR (Variable Bit Rate) вместо CBR (Constant Bit Rate). Это может улучшить качество при наличии сложных сцена.

  5. -profile:v high: Указывает на использование High Profile в H.264, что является лучшим выбором для большинства дисплеев и потоковых приложений.

  6. -level 4.1: Указывает уровень H.264. Убедитесь, что уровень выбран правильно в зависимости от целевой платформы.

Дополнительные рекомендации:

  • Убедитесь, что на выходе вы получаете нужное разрешение (-s 1280x720), и это соответствует вашим желаниям по качеству.
  • Если ваше исходное видео содержит аудиопотоки, вы можете настроить их параметры. Например, -b:a 96000 для битрейта 96 кбит/с. Можно увеличить этот параметр для улучшения качества звука.
  • Оцените использование других кодеков для аудио, таких как libmp3lame, если вы хотите изменить качество.

Ошибка 403 Forbidden:

К сожалению, 403 ошибка указывает, что сервер отклоняет доступ к ресурсу. Это может быть связано с правами доступа, настройками авторизации или ограничениями сервера. Проверьте корректность URL и права доступа. Возможно, вам потребуется включить ключ API или другую аутентификацию, чтобы получить доступ к этому ресурсу.

Таким образом, эти рекомендации и изменения в вашей команде FFmpeg помогут вам достичь лучшего качества видео при конвертации H.265 в H.264.

Оцените материал
Добавить комментарий

Капча загружается...