Декодирование OpenH264 с задержкой в ​​сети, вызывающей сбой - PullRequest
2 голосов
/ 17 июня 2019

В моей локальной сети работает OpenH264.

Код выглядит примерно так.

send(server, frame)
recv(client, frame)
DecodeFrameNoDelay(frame, frame_buffer)

if(frame_buffer.iBufferStatus == 1)
//process frame

Это прекрасно работает при подключении с низкой задержкой в ​​локальной сети.но происходит сбой при подключении с высокой задержкой, например, при медленном VPS.

Я могу получить первый кадр, но затем происходит сбой потока, и DecodeFrameNoDelay не возвращает никаких кадров.

Если я установил битрейт и FPSочень низкий, я могу заставить его работать.это наводит меня на мысль, что это связано с синхронизацией?

Должен ли я помещать декодированные кадры в буфер, а затем декодер декодировать кадры из буфера?как поддерживать требуемый FPS?

Я ценю любые отзывы, спасибо!

1 Ответ

0 голосов
/ 19 июня 2019
h264_encoder->SetOption(ENCODER_OPTION_IDR_INTERVAL, &iIDRPeriod);
// or
h264_encoder->ForceIntraFrame(TRUE);

Я предполагаю, что при потоковой передаче через Интернет необходимо, чтобы кадр IDR отправлялся так часто, чтобы синхронизировать декодирование.

Я чувствую, что это довольно круто, но это делает работу.

...