Я создаю пресеты для наших пользователей, чтобы конвертировать видео в подходящий формат для нашего онлайн-хранилища видео. Поскольку я давно не создавал что-то подобное с нуля, я смотрел, что рекомендуют другие, и заметил, что многие из них специально рекомендуют кодирование с переменным битрейтом. Например:
https://support.google.com/youtube/answer/1722171?hl=ru
Даже с прогрессивной или псевдопотоковой передачей, разве это не приведет к паузе и заиканию при воспроизведении, как только вы наткнетесь на сегмент с высоким битрейтом? Это просто кажется странным в качестве общей рекомендации, когда это может привести к плохому воспроизведению. Или я просто переоцениваю проблемы, поскольку прошло несколько лет с тех пор, как я в последний раз изучал это. Вы обычно используете переменный битрейт для онлайн-доставки в эти дни?
Игроки буферизуют потоки. Чем больше размер буфера, тем длиннее окно, в котором кодер должен использовать более высокие битрейты для жесткого контента, а затем меньше битов в начале или позже для легкого контента, чтобы добиться одинакового качества для всего видео.
Я предполагаю, что вы собираетесь использовать кодек h.264 (также известный как AVC), так как это де-факто стандарт для потокового видео в Интернете. VP8 не такого хорошего качества. VP9 может выглядеть лучше, чем h.264, но поддержка ограничена. HEVC (h.265) также лучше, чем h.264, но опять же поддержка проигрывателя ограничена. (А аппаратное ускорение декодирования не будет широко распространено в течение многих лет. Это важно, потому что HEVC очень интенсивно использует процессор для декодирования, больше, чем AVC.)
Я говорю о сравнении качества с лучшими доступными кодировщиками для каждого кодека. x264 для AVC, VPx от Google для VP8/VP9 и x265 для HEVC. Все с настройками выкручены почти до конца. Однако x265 начнет получать количество секунд на кадр вместо кадров в секунду для 1080p с такими медленными настройками. (на x264 порядка быстрее, так как он был практически зрелым в течение нескольких лет, и было обнаружено несколько новых ускорений или улучшений качества.)
Все эти кодировщики являются бесплатным программным обеспечением с открытым исходным кодом. Приятно, что в наши дни вам не нужно ничего платить, чтобы получить кодеки мирового класса. :)
Случайный поиск в Google на x264 vbv для потоковой передачи: http://forum.doom9.org/showthread.php?t=147460
Пример из x264 --fullhelp
:
Constant bitrate at 1000kbps with a 2 second-buffer:
x264 --vbv-bufsize 2000 --bitrate 1000 -o <output> <input>
(на самом деле не используйте однопроходный режим целевого битрейта. Либо 2pass, если у вас есть конкретный целевой битрейт, либо crf с целевым качеством.)
редактирование: рекомендуемое использование для потоковой передачи, по словам ведущего разработчика x264 (Джейсона Гарретта-Глазера), — это режим целевого качества (CRF) с битрейтом, ограниченным VBV. например
x264 --vbv-bufsize 2000 --vbv-maxrate 1000 --crf 22 -preset slower -o <output> <input>
vbv-maxrate
это максимальная скорость, с которой буфер может заполниться. (т.е. максимальная пропускная способность сети). vbv-bufsize
это, конечно, размер буфера, который допускает неустойчивые пики битрейта выше, чем vbv-maxrate
.
И, конечно же, если вы кодируете один раз, чтобы создать файл, который будет транслироваться много раз, тратьте на это как можно больше процессорного времени. Время кодирования не имеет большого значения по сравнению с получением максимального качества на битрейт (компромисс между скоростью и искажением, также известный как RD). Кодирование происходит только один раз, и любые биты, которые вы можете сохранить (при сохранении того же качества), сохраняются при каждой загрузке. например, используйте x264 с --preset veryslow
.
--vbv-buffsize
заключается в том, как это делается.vbv-maxrate
- это скорость заполнения буфера, а не пик декодирования, ограниченный процессором декодера. А CRF + VBV — это рекомендуемый способ кодирования видео в режиме онлайн (в реальном времени) или в автономном режиме для потоковой передачи.
Доктор Мэйхем
Питер Кордес
Питер Кордес
x264 --crf 16 --preset fast
.Гровберг