我正在使用 TIdHttp(来自 Indy 组件)连接到支持 Sony Remote Api 的相机。摄像机将实时取景流作为 HTTP GET 命令的响应发送到 http 连接。我编写了一个 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;
程序正在成功连接到实时流并开始接收来自摄像机的实时视图。但它会随机停止从相机接收任何东西五秒钟(程序空闲并且不会冻结)。我用ICS的THttpCli 替换了 TIdHttp,但问题没有解决。
任何帮助将不胜感激!
编辑:
我使用 curl 工具找出问题是否在我的程序中,但问题仍然存在。我嗅探相机和PC之间传输的数据包,这是延迟时间的截图: