Случайная задержка при использовании 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, чтобы узнать, есть ли проблема в моей программе, но проблема осталась. Я нюхаю пакеты, передаваемые между камерой и ПК, вот скриншот с задержкой: