Ладно, с этим ясно, на WinSock API реализовал... только теперь такая лажа: Exception class EJPEG with message "JPEG error #53" никак не пойму где косяк, данные вроде полные собираю... Вот черновик всего этого безобразия
Код:
procedure TForm1.Button1Click(Sender: TObject);
Const
C_WORD:Cardinal = 65536;
var
sock: TSocket;
buf: array [0..65535] of Char;
tmp,S: String;
RcvLen: Integer;
host: PHostEnt;
addr: sockaddr_in;
ip: pInteger;
d: WSAData;
Start,Finish:Cardinal;
Jpg:TJpegImage;
f:boolean;
mem:tmemorystream;
z:cardinal;
sX:Cardinal;
begin
mem:=tmemorystream.Create; //nicaa?i iioie
jpg:=tjpegimage.create; //nicaa?i eaa?
f:=false; // Aiiieieoaeuiue oeaa
z:=100;//High(Z);
WSAStartup($0101, d);
//
sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
//
host := gethostbyname('192.168.0.90');
ip := pInteger(host.h_addr_list^);
//
addr.sin_family := AF_INET;
addr.sin_port := htons(80);
addr.sin_addr.S_addr := ip^;
//
connect(sock, addr, sizeof(addr));
//
tmp := 'GET /mjpg/video.mjpg HTTP/1.1'+#13+#10+'Authorization: Basic ' + encodestring('admin:admin')+#13+#10+#13+#10;
send(sock, tmp[1], length(tmp), 0);
tmp := '';
//
ZeroMemory(@buf, C_WORD);
RcvLen := recv(Sock, buf, C_WORD, 0);
while RcvLen > 0 do begin
//
Tmp := Tmp + Copy(buf, 0, RcvLen);
RcvLen := recv(sock, buf, C_WORD, 0);
s:='';
start:=pos('яШяа',tmp);//FFD8
if start>0 then
begin
if start>1 then delete(tmp,1,start-1);
finish:=pos('--myboundary',tmp);
if finish>0 then
begin
s:=Copy(tmp,1,finish-1);
delete(tmp,1,finish+5);
//if length(s)<5 then s:='';
end;
end;
if s<>'' then
begin
mem.Clear;
mem.Write(s[1],length(s));
mem.Position := 0;
jpg.LoadFromStream(mem);
Image.Canvas.Lock;
try
application.processmessages;
Image.Picture.Bitmap.assign(JPG);
finally
Image.Canvas.Unlock;
end;
end;
dec(z);
if z=0 then break;
end;
Memo1.Text := Tmp;
WSACleanup();
mem.Free;
jpg.Free;
end;
А вот что приходит:
Цитата:
HTTP/1.0 200 OK
Cache-Control: no-cache
Pragma: no-cache
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Connection: close
Content-Type: multipart/x-mixed-replace; boundary=--myboundary
--myboundary
Content-Type: image/jpeg
Content-Length: 36001
яШяагµЈК“О:8цх«D{SH Ћ
№ЬqHW#ЎлIUЊy§ёфь*VO§4X.EґзщSJсАвҐЫЖz
k^¬3Hdd{PGCлNЮЭGo~‚“l¤зеOЦђ
уТЎ‘вБ\дћЛЙ©ј•nXіяhoЭђI%Пvfфх4нBъ*Аhє42\>v¶М™П \џRz“Ђ=ЂЁ·§†н$…[ПФоф8fъћХ–HQЃАЕuBЉЋіыЊ'W°Л‰¤ёї3МЫ¤dБ>Ща}*&9Нs?_аО‘?--myboundary
Content-Type: image/jpeg
Content-Length: 35944
яШяаt#$vЈ(PHҐ U’D*ҐУ/рИ2>їз50лТўџ(^~F--myboundary
Content-Type: image/jpeg
Content-Length: 35951
яШяаЙ!AІй—ґѓ#люsSwйQO” /?#э?Оjr--myboundary
Content-Type: image/jpeg
Content-Length: 35997
яШяа*‘·jђguЄЪФжЩ?xтGђJCЭ#г®rk3Liо®…ёЌA;’в2Њ1мjЉK KќЙЈ
$S±х«$Ѓ2·LЈоИ2>їз5?~•щ@’Џб`?я--myboundary
Content-Type: image/jpeg
Content-Length: 35958
яШяаЂNф№ЊЈ{‡%rТV№РЊћ?Ј(POjv>µd*)tЛЏ–A‘хя--myboundary
Content-Type: image/jpeg
Content-Length: 35997
яШяаjџјwЏ ”†5Э#г®rk3Liо§Vs‚w%ДecШФ9jRJЧ:“F8МЊcp?/дjмЅeTБ-чy?ЌAдr3/+µЩ9 дѓѓЊuµ“2‹еФ}¤іНЅН·Щжю(ГоиjqЫЉfiAsZ#7Ё;n‘c»ЏР tэjaЪ«Дw”я--myboundary
Content-Type: image/jpeg
Content-Length: 35965
яШяа¦4чW
UncPNдёЊЈ}jµІ)-.t#4cҐ’)Д}jЙ!@Vе—ґѓ?ЏщНMЯ§µE>SdЈшфяL?\KmFиm†¦х>зЅmЕ ѕ‡¦Й=Гтщ¤П,З°ьx)8кЉеж+и:э¦№§‹?Эc•ЙЎfГFгЁ#µjхп^ m,тi—)«йп%ЙыL2Їп$Lсё7Чс®ЫOЦ*/!VOђчB0ET*ћ±3ХdfЄM“'љ>г}си}je№„я--myboundary
Content-Type: image/jpeg
Content-Length: 36015
яШяаЮ“h9лE‡r6г“Т*iqЕVЦ§6©ыЗ’<‚RЖйp&і4ЖћкбX-Дj Ю—”aЏcPд®RZ\иF}ЁЗJ)Hхd‘ )tЛь2ЏЇщНMЯ¦;TSеJ?Ѓ‡еюsSђ'ЃЧ“LгЪќЏj`|я--myboundary
Content-Type: image/jpeg
Content-Length: 35807
яШяаAiщд;w'и;Ч"M»#їbZНФ5?*7G
‰¦uщTыя--myboundary
Content-Type: image/jpeg
Content-Length: 35935
яШяа$t4ёd ЩrЛЩЖGЧьж¦пТўџ(_о0ьїОjr--myboundary
Content-Type: image/jpeg
Content-Length: 35968
яШяачW
Бn#PNдёЊЈАФ9-‹IZзB3F8.Hв>µd )tЛЏ–AџЗьж§пйQO”Щ/чфя--myboundary
Content-Type: image/jpeg
Content-Length: 35944
яШяаЏ*Y(6\°мг?ЏщНN:фЁ§Кl—ыЊъњФдПAх¦!ёаqNБф¦Пъ µ,}O—fв|ЖЭм:Ryѓ8Aјыt§Ьrз>Љ8ёэ)GH–MБРi*єЙ} ?ЉзUЂ=koE“t2Ўюуя--myboundary
Content-Type: image/jpeg
Content-Length: 35871
яШяа"п>Э8&г—9я--myboundary
Content-Type: image/jpeg
Content-Length: 35910
яШяаГ ПгюsScџJЉ|¦ЙF~F—щНN@ћЦ?†цSЂлЕ3~пхj[Ьр(Щёџ1·{”_0o>Э8&г—9фQАЈ…Ћ7A«WсЇ6–i4Л”Ц4ч’е†~У«ыЙ<nЌгЫЇг]¶џ¬Ъ^B>CЭБR‚zД‡Ў¤EUљ/&O4}ЖыгРъФЛutqN2ДГЃJ…xЅ‰i=?1лQ”Бь*ExСј¦?/рћ*RРзп~†ЇS=JеqйщPWг2щmРшR2®~лВЄбr3АЁщVПXум jfз¤MHКЕqежя--myboundary
Content-Type: image/jpeg
Content-Length: 36009
яШяа@х4mП*‘±АЙйP4Ј8в«kS›UэгИ™¤1ЊЙ&:бG&і4ЖћкбH[?Ф№.#(ГЖЎЙ\¤ґ№РЊљ1Т…в”ЃпVI
—LїГ ПгюsScћ?Ё§К”gд`?уљњЂ9и>ґД78§нLџхjXъћ7ж6пnФ _0o>Ј*§,rьъ(аP°«МЇэР;ъ~tЛЭ2VЉ+{)™µ{--myboundary
Content-Type: image/jpeg
Content-Length: 35943
яШяаЮ—”aЏcPеР¤•®t#йF:P*‘JGЦ¬’$.™{H3шях№vъ›$чИжђufфИP¤г©\јЕ}_ґЧ4сq,R!),,pСёк=+WсжТ Н&™rљЖџ$—,ыL2/п$Lсё7йњю5ЫiъНҐЬ!“д=РЊU('¬HwF‘\ХYўтdуWо1щЗ§ЅL·P ћЋ?*q–&Ь>Х™=‰it hЕFSр©гFт?ќїВyь©KCћїЎ«ФПR№^1ЕЖx©—Лn™?…ЁВџКЄбr№ћ)‡(Щю<ы?ъ?юTЊ¬TЏ(`рw7я--myboundary
Content-Type: image/jpeg
Content-Length: 35892
яШяаъS7оя--myboundary
Content-Type: image/jpeg
Content-Length: 35920
яШяаGЧьж§БПLTSеKПИГ?NяХЛrѕѓЇЪkљxћ6XҐF1Н4n:‚;VЇг^m$Тi—)¬iтKrАґГ"ютDПЂгpйњю5ЫiъХҐд!“д=Р ЊU('пD‡tiљ«4^Lћhя--myboundary
Content-Type: image/jpeg
Content-Length: 35972
яШяаћкбH[?ФЅ.#(ГЖЎЙ\ґ•®t#4cЃBдЉRЅYH6\Ія--myboundary
Content-Type: image/jpeg
Content-Length: 35954
яШяаqFц5Z”’µО„fЊtЎA=iHъХ’BЂҐЛ.8ђgся--myboundary
Content-Type: image/jpeg
Content-Length: 35985
яШяагЉ**\TэгєdђЖ№‘сЧ
95™¦4чW
Бn#PNфёЊЈАФ9jRZ\иFhЗ…Ћфв>µdђ*)tЛь2ю?з569йЉЉ|*IyщXgйюsSђ$р>ґАn=©АJ`|эАXъћ7¬mЮЭЁ wѓДcyцйN »—9фQАЈ--myboundary
Content-Type: image/jpeg
Content-Length: 36015
яШяаpqO#ЬТmОzСaЬЌєr*ђgUmjslџјwЏ ”†0ZGЗ\(дЦf?УЭ\+ёЌA;Тв2Њ1мj•мU•®t#4cҐ
ѓN"¬’К]2геђd}Оj|sУщ@’ут0йюsSђ'Ѓх¦qнNЭW™_ы*vфьк;Э2V Љ;{)Щµ{--myboundary
Content-Type: image/jpeg
Content-Length: 35989
яШяаО8лUµ©НЄ~сЮ<‚RФґЏЋёQЙ¬Н1§єёVs‚wҐМecЪЎЛRТV№РЊыQЋ”.H§х« …K¦_бђgся--myboundary
Content-Type: image/jpeg
Content-Length: 35990
яШяашл…љМУвкбHЁ'r\FQ†=Є•КKKќНйB‚E.ЅY$H6]2цђgсятсЙЏ=З8зµYУн¦УbД[Qєa‡ј+ЬџцЏzЫ†;}M’{‡д
УIЭ‰м?ђЎI*Jеж+и:э¦№§‰гeЉT;&…Ћ7A«WЇzуi&“LєM_O’K– ыL2/п$Lсё7lзхЫiъХҐд!“д=ФЊU('¬HzdfЄM“'љ>гњz{ФЛuSЊ±0#p#ЅBж‹Ш–“ШЂД*2??…HЇmе1щЂущR–‡=CW©ћҐrјcЉ6 г'2щmРшR2Ё<)5Wђ‘њQrЌћ6±зШФзћ‘1Зµ#+#К<Ня--myboundary
Content-Type: image/jpeg
Content-Length: 35975
яШяаµOЮ<‰ђJCЭ$?л…љМУ{›…e[?ФЅ.#(ГЖЎЛR¬*sЎ?ЌаP№"њGЦ¬’.™@вAџЗьж§пQO”Щ(ю ъњФдЙа}i?n:qNЇНщя--myboundary
Content-Type: image/jpeg
Content-Length: 35982
яШяа›TэгєdђЖ ‘сЧ
95™¦4чW
К·Ё'r\FQ†=ЌG2Ѕ‹KKќЙЈ(PHпJGЦ¬‚$.™†A‘хя--myboundary
Content-Type: image/jpeg
Content-Length: 35944
яШяаdьОjaЧУµE>P$Г?#Льж§ “Ач4Д7t§¤ЦЁ«\Ї*лцљжћ.#uЉT;&…Ћ7A«WсЇ6’i4Л”Хфч’ е†~У«ыЙ<nЌГЫ9ЗЅvЪ~µiydщ9B0ETЎ}bCє4ИНT–/&O5~г}сйпS-Ф-ьcт§baЌАѓнP№—BZ]1лLdюTхxгc—шO?•+<$хэ
^¦z•КсЋ(ЫЊсщTЛе·@OбHк№б[тЄё\„Њр*.Qі‘µЏ>Ж¬zDЖљБЉ‘е
§ѓ–я--myboundary
Content-Type: image/jpeg
Content-Length: 35993
яШяа$?л…љМУ{«…!n#PNфёЊЈ{ЋdRZ\иFNzsF:P№#їбJ@ч«$‰K–_бqџЗьж¦пУщ@’ЊьЊбЯъ ФдПAх¦!ЅєSЂ=qLЯ»эZ–ч<
6nЙ‘·{”_0o>Ј*§Ьrз>Ђp(Аг¬yо9З=ЄОџm.›№–"ЪЌРЫ=б_Sо{ЦЬQЫиzl“Ь? nљLтМ{ЗЃB“ЋЁ|·+и:э¦№§‹?ШE*1IЎc†ЌЗPGjХьkНҐ™фЛ”Хфч’ еЂ?i†Eэд‰ћ7ЖбП®нґэjТтSд=РЊbЄPOXђоЌ"*¬±y2yЈэ[}сйпS-Ф-СЗеNу"aЌАѓнP№—BZObЊTe1R+З?ьїВҐ)hsчїCW©ћҐrёї*6 г<TЛе·LџВ‘•AОТ
«…ИH$а‹”bxЪЗџcSћzDЖ‘ѓЗ”0x;›я--myboundary
Content-Type: image/jpeg
Content-Length: 35970
яШяао‘сЧ
95™¦4чW
BЬF*ќйqFц5Jц--.t#&ЊtЎrE)х« ‰Л¦_бђgся°_—Ћ±зёзХќ>Ъm2!q,EµЎ¶{ВѕюзЅmГѕ‡¦Й=Гт щ¤П,З°ьx)8кЉQж+и:э®№§‹„aЁvMњ4n:‚;VЇг^m$Тi—)¬iп%Л--myboundary
Content-Type: image/jpeg
Content-Length: 36029
яШяаА§JѕLЛ/р±ГT¤c<гљ,+‘
8P)p@§ђ=M&Р}h°оFЖ*iqЗZ**Nm“чЏ$y¤1©ip&і4ЖёєёVq‚wҐДecШФ9kЎVV№РЊСЋ”('Ц”ЏЁв¬’$.™qтИ3шяСМ¤6©p™ђ ѓџ%;(чюї…Ќ»Щ¦Z
*ФэўжvwUжWюиЂэ?:eо™+Esіjц--myboundary
Content-Type: image/jpeg
Content-Length: 35988
яШяађgUmjsjџјwL‚RФ™pЈ“YљcOup¬ж5пK?К0З±ЁrЦЕ$ *s*ж—(PHҐЗЦ¬’.YqтИ3шя--myboundary
Content-Type: image/jpeg
Content-Length: 35965
яШяаcOup¤?ФЅ.#(ГЖЎЛ[–—:љ1Т…Й¤zІHђlєeюуљ?uйQO” (qЂь?ОjrОџm6›ё–"ЪЌРЫ=L+к}ПzЫ†;}M’{†д
УH,Юѓщ
њu+—?Ї*лцљжћ.#aЁЕ&…О7AҐjхо+Н¤™фЛ”Хфщ$№ ґГ*ютDПЂгpцлшЧm§лV—pOђг”#UJ лС¤EUљ/&O5~г}сйпS-Ф-СЕ8Лnj…Н±-+h@СЉaLt§«ЗyL~_б<юT¬Р“чїCW©ћҐ}јvЈn3ЕLѕ[tюЊЄv“шU\.BA<T_qЙгk}ЌX>С7ЦV*G”0zеїъХIЃ9Е!_Вњ »ЃШШИќGзKЋД“ф§p" у“Н7iдTЗo?)ьM0…Ищт§p!8№>фТFю9'УЪљ~†‹еYўypT lt9F<уJѕdЁ:Ё9И=ъФЗ"ЎaдК_ўH~ocШС`ёБ?3ъљ6ЄзjЊэ*LsЗjn:Q`ёВ*&=й зйMЖ+г0}ї*Nr)дu$~cрн@\…г!SЯҐ2"Z,7ЮN
X#ЋzT/•8“+ь*м{RЏ#'ЦЊzS?ЗQH@зґ--myboundary
Content-Type: image/jpeg
Content-Length: 35934
яШяа-JKKќО(ЗJ)H«$…K¦^Тю?з5>9йQO”Щ/?#Льж§ OлLCqнNЗ^)›ую*KSАҐЩ»эcnц(yЂрѓyцйJ±Лњъ(аRа--myboundary
Content-Type: image/jpeg
Content-Length: 36039
яШяаJAуE‚дJЃG
.)дzM*з*‘·E@ТгЉ**NmSчЋйђJC-$?л…љМУ{«…`·Ё'z\FQ†=ЌC’ѕ…¤*sЎЈ(\‘ТњWлVA
—LЅ¤ьОjaЧТўџ)І_о°‡щНN@'ЃЧ“LC
pТ™їwъµ-оxlЬO?ЫЅ‡J/™ћn>ЈҐ;fг—9яхь)6пf—h4«_ф‹™Ш ЭW™_ы*vУ·зLЅУ%hў‚КvmbА c`№^:ЗћгњsЪ¬йцУi‘‰b-ЁЭ.Шaп
ч'эЈЮ¶вЋЯCУdћбЖ@Э4™е?ц‰АЎI*Q\·+и:э¦№§‹?ШE"“BЗ
Ћ*ЋХ«шЧ›I4љeТjъ|’Ь°н0Hїј‘3Жа8Ь9ъю5ЫiъХҐд!“д=РЋET Ў}bCРУ#5RXј™<СчпЏOz™nЎ=SЊ±0ЖаAцЁWObZOb?{Te*Exгo )ЏЛьџК”ј9ыЯЎ«ФПR№^1FЬgЉ™|¶а
F ћЄ® ћ*3”|я--myboundary
Content-Type: image/jpeg
Content-Length: 36026
|
Последний раз редактировалось Janom, 29.03.2013 в 12:45.
|