Случайная задержка при использовании TStream для чтения пользовательского потока с http-сервера

Я использую TIdHttp (из компонентов Indy) для подключения к камере, которая поддерживает Sony Remote Api. Камера отправляет поток просмотра в реальном времени на соединение http в ответ на команду HTTP GET. Я написал подкласс TStream и использовал его в качестве потокового класса. Вот мой код для подключения к прямой трансляции:

  liveStream := TLiveStream.Create;
  IdHttp1.Get('http://192.168.122.1:8080/liveview/liveviewstream', liveStream);

Определение класса TLiveStream выглядит следующим образом:

TLiveStream = class(TStream)
public
    constructor Create;
    function Read(var vBuffer; aCount: Longint): Longint; override;
    function Write(const aBuffer; aCount: Longint): Longint; override;
    function Seek(const aOffset: Int64; aOrigin: TSeekOrigin): Int64; override;
end;

Программа успешно подключается к прямой трансляции и начинает получать прямой вид с камеры. Но он случайным образом перестает получать что-либо от камеры на пять секунд (программа не работает и не зависает). Я заменил TIdHttp на THttpCli из ICS, но проблема не решается.

Любая помощь будет принята с благодарностью!

Редактировать:

Я использовал инструмент curl, чтобы узнать, есть ли проблема в моей программе, но проблема осталась. Я нюхаю пакеты, передаваемые между камерой и ПК, вот скриншот с задержкой:

введите описание изображения здесь

0 ответов

Другие вопросы по тегам