Я хотел бы создать потоковый видеопоток zerolatency
и воспроизвести его в проигрывателе VLC с минимальной задержкой.Как уменьшить задержку при потоковой передаче x264
Это те настройки, которые я в настоящее время используют:
x264_param_default_preset(&m_Params, "veryfast", "zerolatency");
m_Params.i_threads = 2;
m_Params.b_sliced_threads = true;
m_Params.i_width = m_SourceWidth;
m_Params.i_height = m_SourceHeight;
m_Params.b_intra_refresh = 1;
m_Params.b_vfr_input = true;
m_Params.i_timebase_num = 1;
m_Params.i_timebase_den = 1000;
m_Params.i_fps_num = 1;
m_Params.i_fps_den = 60;
m_Params.rc.i_vbv_max_bitrate = 512;
m_Params.rc.i_vbv_buffer_size = 256;
m_Params.rc.f_vbv_buffer_init = 1.1f;
m_Params.rc.i_rc_method = X264_RC_CRF;
m_Params.rc.f_rf_constant = 24;
m_Params.rc.f_rf_constant_max = 35;
m_Params.b_annexb = 0;
m_Params.b_repeat_headers = 0;
m_Params.b_aud = 0;
x264_param_apply_profile(&m_Params, "high");
Используя эти настройки, у меня есть следующие вопросы:
- VLC показывает много недостающих кадров (см скриншот, "Verloren"). Я не уверен, что это проблема.
- Если я установил значение < 200 мс для задержки сетевого потока в VLC, VLC отображает несколько кадров и останавливает декодирование/рендеринг кадров.
- Если я установил значение> = 200 мс для задержки сетевого потока в VLC, все выглядит хорошо до сих пор, но латентность, очевидно, 200 мс, которая слишком высока.
Вопрос: Какие параметры (x264lib и VLC) следует использовать для того, чтобы кодировать и поток с минимальными задержками, как это возможно?