Вверх ↑
Ответов: 223
Рейтинг: 0
#1: 2021-11-03 17:15:57 ЛС | профиль | цитата
Подскажите пожалуйста, как можно осуществить видео захват экрана и передача его через TCP.
Суть, сервер и клиент должны обмениваться потоковым видео с экрана.
Грубо говоря, оба должны одним глазком наблюдать за происходящим на экране напарника.
Я собрал вот такой вот образец. Но он слишком медленный. А если убрать ZIP то программа просто зависает.

Add(MainForm,2953706,469,147)
{
Width=334
Height=228
Color=-16777215
Caption="R6"
BorderStyle=5
TaskBar=1
Point(Handle)
Point(doAlphaBlendValue)
Point(doVisible)
Point(doTop)
link(onCreate,10374431:doEvent1,[])
}
Add(WinTools,10617172,469,231)
{
link(Handle,2953706:Handle,[])
}
Add(TrackBar,632238,392,175)
{
Top=198
Width=334
Align=4
Color=-16777215
Max=255
Min=20
Position=100
ThumbLength=15
PageSize=20
link(onPosition,2953706:doAlphaBlendValue,[])
}
Add(Switch,7591753,343,210)
{
DataOn=String(1)
DataOff=String(0)
Default=0
link(onSwitch,6547179:doPosition,[])
}
Add(TrackBar,6547179,392,210)
{
Left=425
Top=220
Visible=1
Max=1
link(onPosition,2953706:doVisible,[(429,216)(429,188)])
}
Add(MultiElement,1440820,287,210)
{
link(onEvent1,7591753:doSwitch,[])
}
BEGIN_SDK
Add(EditMulti,522040,21,21)
{
EventCount=1
}
Add(Keyboard,12271127,133,63)
{
Key=121
link(onReadKey,10994463:doCompare,[])
}
Add(Timer,9380939,84,63)
{
Interval=50
OverCall=1
link(onTimer,12271127:doReadKey,[])
}
Add(If_else,10994463,182,63)
{
Op2=String(1)
link(onTrue,9782266:doEvent1,[])
}
Add(Keyboard,16108651,133,105)
{
Key=121
link(onReadKey,7633786:doCompare,[])
}
Add(Timer,603799,84,105)
{
Interval=50
OverCall=1
link(onTimer,16108651:doReadKey,[])
}
Add(Hub,9782266,231,63)
{
link(onEvent1,522040:onEvent1,[(283,69)(283,27)])
link(onEvent2,9380939:doStop,[(257,76)(257,64)(72,64)(72,76)])
}
Add(If_else,7633786,182,105)
{
Op2=String(1)
link(onFalse,9380939:doTimer,[(226,118)(226,94)(72,94)(72,69)])
}
END_SDK
Add(Screen,2394200,350,70)
{
}
Add(Math,16735540,357,119)
{
OpType=1
Op2=220
link(onResult,2953706:doTop,[(429,125)(429,195)])
link(Op1,2394200:Height,[])
}
Add(Hub,10374431,511,161)
{
OutCount=3
link(onEvent1,16735540:doOperation,[(537,167)(537,146)(345,146)(345,125)])
link(onEvent2,4426237:doOpen,[(537,174)(537,248)(275,248)(275,377)])
link(onEvent3,10617172:doPopup,[(537,181)(537,213)(457,213)(457,244)])
}
Add(StreamUnPack,351980,399,371)
{
DataCount=#3:png|
link(onUnPack,8079361:doData,[])
}
Add(Image,5934760,511,371)
{
Top=45
Width=495
Height=226
Align=5
ModeSp=3
ViewStyle=1
Point(Handle)
Point(onPaint)
Point(Width)
Point(Height)
}
Add(StreamPack,15537523,175,385)
{
DataCount=#3:png|
link(onPack,9818273:doCompress,[])
}
Add(ScreenShort,9116219,126,385)
{
link(onCapture,15537523:doPack,[])
}
Add(Timer,6435727,77,385)
{
Interval=100
Enable=1
link(onTimer,9116219:doCapture,[])
}
Add(TCP_Server,4426237,287,371)
{
Port=3434
DataType=3
link(onRead,7599453:doDeCompress,[])
link(onConnect,6435727:doTimer,[(331,384)(331,366)(72,366)(72,391)])
link(onDisconnect,119864:doEvent1,[(331,391)(331,429)(296,429)(296,468)])
}
Add(Hub,119864,308,462)
{
link(onEvent1,5934760:doClear,[(396,468)(396,384)])
link(onEvent2,6435727:doStop,[(334,475)(334,443)(72,443)(72,398)])
}
Add(DoData,8079361,455,371)
{
link(onEventData,5934760:doLoad,[])
link(Data,351980:png,[(461,359)(433,359)(433,415)(405,415)])
}
Add(ZLIB,9818273,224,385)
{
link(onStream,4426237:doSend,[])
}
Add(ZLIB,7599453,350,364)
{
link(onStream,351980:doUnPack,[(390,370)(390,377)])
}

карма: 0

0