FFMPEG / x264: однопроходный: как повысить битрейт времени запуска?

466
Mark Gerolimatos

При использовании однопроходного режима с указанным размером VBV libx264 будет изначально «мешать с песком» битрейта, предположительно из-за отсутствия доказательств (или, возможно, даже ошибки). ( Это ироническое продолжение этого вопроса, который имел дело с чрезмерно ВЫСОКИМИ начальными битрейтами при однопроходном кодировании без спецификации VBV )

Пожалуйста, смотрите графики битрейта внизу для получения дополнительной информации: обратите внимание на исходный провал, за которым следует перекоррекция («Эй, у меня осталось несколько битов!») Перед нормализацией. Обратите внимание, что это исправлено в двухпроходном решении. Отсутствие начального I-кадра на этих двух графиках, вероятно, является ошибкой инструмента (значение PTS исходного I-кадра составляет 0,15 секунды).

Этот эффект предотвращает параллельную обработку длинного актива «разделение, кодирование и повторную сборку», поскольку вы получите качественный импульс в начале каждого сегмента.

Это можно исправить с помощью двухпроходного кодирования, что является неприемлемым решением для потоков в реальном времени (хотя при распараллеливании можно было бы оплатить стоимость двухпроходного кодирования).

Я надеюсь, что есть два решения: любая помощь будет более чем желанной.

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

  2. Способ выполнения ограниченного двухпроходного кодирования в качестве «канала»: полное двухпроходное кодирование в качестве канала, конечно, бессмысленно, но должно быть возможно иметь «микропроходы», когда период обратной связи прохождения является чем-то вроде второй. Это гораздо менее идеально, чем однопроходное решение, чтобы обойти такой короткий эффект, но было бы приемлемо, если (1) невозможно.

    • График битрейта за один проход: обратите внимание на начальное «падение мешка с песком» Создано с:

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -bufsize 1000k onepass.mp4

FFMPEG / x264: однопроходный: как повысить битрейт времени запуска?

  • Двухпроходный битрейт-график: это почти идеальный результат. Обратите внимание, что эта окончательная форма не обязательна: достаточно избежать первоначального мешка с песком. Создано с:

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -pass 1 -f mp4 / dev / null

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -pass 2 twopass.mp4

Двухпроходный битрейт-график: это ожидаемый результат

  • Раздел первого кадра в однопроходном кодировании

FFMPEG / x264: однопроходный: как повысить битрейт времени запуска?

  • Раздел первого кадра в двухпроходном кодировании

FFMPEG / x264: однопроходный: как повысить битрейт времени запуска?

3
Вы пробовали режим CRF? Gyan 8 лет назад 0

0 ответов на вопрос

Похожие вопросы