3

При использовании однопроходного режима с указанным размером 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 -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

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

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

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

0