2013-04-29 1 views
0

그건 그렇고, 나쁜 영어로 유감입니다. 이 시나리오에서 Indy를 사용하여 클라이언트와 서버간에 스트리밍 비디오 시스템을 만들고 싶습니다. USB 포트를 통해 서버에 직접 연결된 스테퍼 모터가있는 웹캠. 그런 다음 서버가 녹화를하고 캡처 된 이미지를 소켓을 사용하여 클라이언트에 보냅니다.이 경우에는 Indy TCPSocket을 사용합니다. 이 시스템은 CCTV 시스템과 유사합니다. 즉,이 시스템은 단방향 통신입니다. 내가 코딩에서 수행 한 것은 내가이 코드를 사용하여 비트 맵으로 비디오를 변환 할 수 있습니다 :Indy TCPServer/Client를 사용하여 비트 맵으로 변환 한 비디오를 클라이언트에 보내는 방법은 무엇입니까?

procedure TFormHome.Timer1Timer(Sender: TObject); 
begin 
    VideoGrabber.GetBitmap(FormStream.Image1.Picture.Bitmap); 
end; 

을하지만, 난 여전히 지속적으로 클라이언트에 이미지를 전송하는 방법을 혼란 스러워요 있도록 움직이는 그림으로 클라이언트에서받은 이미지 왜냐하면 이미지를 직접 보낼 수 없으며 바이트 배열로 변환해야하기 때문입니다.

아마도 Indy TCPServer/Client를 사용하여 클라이언트에 비트 맵 이미지를 보내기위한 샘플 스크립트를 보여줄 수 있습니다.

감사합니다.

답변

2

TBitmap 개체에 비트 맵이 있습니다. 가장 간단한 해결책은 TBitmap.SaveToStream()을 사용하여 TStream에 저장 한 다음 Indy의 TIdIOHandler.Write(TStream)TIdIOHandler.ReadStream() 방법을 사용하여 전송하는 것입니다.

+0

확인. 나는 그것을 시도 할 것이다. 당신의 대답에 감사드립니다. ^^ –

+0

jpeg로 시도했지만 브라우저에 쓰레기가 표시됩니다. https://repl.it/IJXU – nurettin

+0

@nurettin은 실제 HTTP 서버를 구현하고 있습니까? 웹 브라우저는 JPEG로 표시하기 위해 HTTP 헤더가없는 원시 JPEG 데이터 만 보내면 JPEG를 JPEG로 표시하는 방법을 알지 못합니다. –

관련 문제