x264 контроль скорости
Мы используем кодер x264 в проекте видеоконференцсвязи, у нас есть базовое потоковое видео, однако у нас возникают проблемы с пониманием того, как различные настройки управления скоростью определяют конечный битрейт. Мы устанавливаем следующие параметры:
x264_param_t params;
x264_param_default_preset(¶ms, "ultrafast", "zerolatency");
params.i_threads = 1;
params.i_width = width;
params.i_height = height;
params.i_fps_num = fps;
params.i_keyint_max = fps;
params.b_intra_refresh = 1;
params.b_repeat_headers = 1;
params.b_annexb = 1;
//Set rate control stuff here
x264_param_apply_profile(¶ms, "baseline");
Если мы только установим параметр params.rc.i_bitrate, кодировщик, похоже, значительно превысит битрейт. Если мы установим параметры i_vbv_max_bitrate & i_vbv_buffer_size, мы увидим битрейт, который достигает пика (и иногда выходит за пределы) параметра i_vbv_max_bitrate. Очевидно, что жесткий контроль над битрейтом важен для видеоконференций, но документация является непрозрачной. Кто-нибудь еще использует x264 для видеоконференций? Как вы настраиваете кодировщик? Любая помощь приветствуется, спасибо заранее.
1 ответ
Если вы находитесь в режиме видеоконференций с малой задержкой для минимального дрожания и надежной работы, вы должны быть в режиме CBR, а не в режиме VBR. Это режим VBR, который дает взлеты и падения, с которыми система с низкой задержкой не может справиться.
Существуют специализированные алгоритмы VBR для приложений видеосвязи с малой задержкой / приложений выживания, но у x264 этого нет. Так что не используйте его vbr. его vbr предназначен для хранения.
Существует --nal-hrd cbr для включения cbr
Вы не можете гарантировать, что битрейт не будет превышать точку, потому что все статистически. Однако вы можете держать его под контролем в течение 99% времени, если выполняются некоторые предположения.
Ваш размер буфера vbv должен быть наименьшим размером, с которым вы можете иметь дело с точки зрения качества, для двух целей: 1. Не допускать слишком большого изменения битрейта. 2. Сокращение сквозной задержки. Это та буферизация, которая, как предполагает кодер, доступна на стороне декодера., Чем меньше, тем хуже качество. Найдите наименьшее значение, с которым вы можете иметь дело.
Максимальный битрейт vbv должен быть установлен на целевое значение битрейта cbr. Это руководство для rc, что это максимальный мгновенный битрейт, который вам разрешен. Установите его на целевой битрейт. Помните это руководство. Из-за статистического характера видео оно может быть перехвачено.
Убедитесь, что у вас есть внутреннее обновление, и поэтому я снимки выключены.
Ultra fast, вероятно, не очень хорошая предустановка для использования без переопределения некоторых настроек. Установите ваши опорные картинки, b-картинки, профиль явно. Установите свой я и субме на более высокие уровни. [самый высокий уровень, если бы я был тобой]. Это одна из причин, по которой вы стреляете. Из-за этого кодировщик не может выполнять хорошую работу. Когда кодировщик лучше меня и его субмарины, он требует меньших битов для кодирования сложных частей, где происходит перестрелка! Обычно люди, которые не понимают видео, не получат это. Они продолжают спрашивать, почему я / Subme имеет значение для битрейта и перестрелок. Поверь мне, это так. Сколько вы снимаете, когда приходят твердые части для кодирования, полностью зависит от алгоритмов кодировщика, и я - один из критических.
Посмотрите, в каком профиле вам нужно работать. Кабак дает улучшение до 20%. Так что, если вы можете сделать основной профиль, сделайте это. использовать только 1 эталонное изображение и нет B изображения. Но использование Cabac не повредит, если вы можете использовать битрейт.
РЕДАКТИРОВАТЬ: в общем, нет волшебной таблетки. Выше приведен совет, полученный за годы работы в области мультимедиа и понимания видео. Однако вам все равно придется немного поиграть, чтобы найти оптимальные настройки между качеством / задержкой и другими ограничениями, специфичными для вашей системы. Убедитесь, что вы понимаете термины, прежде чем настраивать их, иначе вы будете бегать кругами вечно. Также помните, что видео является статистическим. Ничто не будет идеальным на все 100%.