Sony Remote Api をサポートするカメラに接続するために、TIdHttp (Indy コンポーネントから) を使用しています。カメラは、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;
プログラムはライブ ストリームに正常に接続され、カメラからのライブ ビューの受信を開始します。ただし、カメラからの受信を 5 秒間ランダムに停止します (プログラムはアイドル状態で、フリーズしません)。TIdHttp をICSの THttpCli に置き換えましたが、問題は解決しません。
どんな助けでも大歓迎です!
編集:
curl ツールを使用して問題がプログラム内にあるかどうかを調べましたが、問題は残りました。カメラと PC の間で送信されるパケットを盗聴します。遅延時間のスクリーンショットは次のとおりです。