Opened 11 years ago
Closed 11 years ago
#3679 closed defect (fixed)
Some HTTP MJPEG streams are not recognized
Reported by: | Andrey Utkin | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avformat |
Version: | git-master | Keywords: | mjpeg http |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Some HTTP MJPEG streams are perfectly recognized automatically, like ones from Axis cameras. But there is a problem with streams from Arecont Vision cameras.
PCAP network dump and textual ngrep output will be attached.
How to reproduce:
$ ffmpeg -loglevel debug -i http://172.16.1.213/mjpeg ffmpeg version N-63469-g5863207 Copyright (c) 2000-2014 the FFmpeg developers built on May 27 2014 16:46:13 with gcc 4.7.3 (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) configuration: --enable-gpl --enable-libx264 --enable-encoder=libx264 --disable-stripping --enable-debug --extra-cflags='-O0 -g -ggdb' --enable-libopus --enable-libvpx --enable-x11grab --enable-libfreetype --enable-filter=drawtext libavutil 52. 87.100 / 52. 87.100 libavcodec 55. 65.100 / 55. 65.100 libavformat 55. 41.100 / 55. 41.100 libavdevice 55. 13.101 / 55. 13.101 libavfilter 4. 5.100 / 4. 5.100 libswscale 2. 6.100 / 2. 6.100 libswresample 0. 19.100 / 0. 19.100 libpostproc 52. 3.100 / 52. 3.100 Splitting the commandline. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'. Reading option '-i' ... matched as input file with argument 'http://172.16.1.213/mjpeg'. Finished splitting the commandline. Parsing a group of options: global . Applying option loglevel (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options: input file http://172.16.1.213/mjpeg. Successfully parsed a group of options. Opening an input file: http://172.16.1.213/mjpeg. [http @ 0x2a9d280] request: GET /mjpeg HTTP/1.1 User-Agent: Lavf/55.41.100 Accept: */* Range: bytes=0- Connection: close Host: 172.16.1.213 [http @ 0x2a9d280] header='HTTP/1.0 200 OK' [http @ 0x2a9d280] http_code=200 [http @ 0x2a9d280] header='Content-Type: multipart/x-mixed-replace;boundary=fbdr' [http @ 0x2a9d280] header='' [AVIOContext @ 0x2a9cc20] Statistics: 1049703 bytes read, 0 seeks http://172.16.1.213/mjpeg: Invalid data found when processing input
But it works if input format is specified explicitly:
$ ffmpeg -loglevel debug -f mjpeg -analyzeduration 0 -probesize 32 -i http://172.16.1.213/mjpeg ffmpeg version N-63469-g5863207 Copyright (c) 2000-2014 the FFmpeg developers built on May 27 2014 16:46:13 with gcc 4.7.3 (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) configuration: --enable-gpl --enable-libx264 --enable-encoder=libx264 --disable-stripping --enable-debug --extra-cflags='-O0 -g -ggdb' --enable-libopus --enable-libvpx --enable-x11grab --enable-libfreetype --enable-filter=drawtext libavutil 52. 87.100 / 52. 87.100 libavcodec 55. 65.100 / 55. 65.100 libavformat 55. 41.100 / 55. 41.100 libavdevice 55. 13.101 / 55. 13.101 libavfilter 4. 5.100 / 4. 5.100 libswscale 2. 6.100 / 2. 6.100 libswresample 0. 19.100 / 0. 19.100 libpostproc 52. 3.100 / 52. 3.100 Splitting the commandline. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'. Reading option '-f' ... matched as option 'f' (force format) with argument 'mjpeg'. Reading option '-analyzeduration' ... matched as AVOption 'analyzeduration' with argument '0'. Reading option '-probesize' ... matched as AVOption 'probesize' with argument '32'. Reading option '-i' ... matched as input file with argument 'http://172.16.1.213/mjpeg'. Finished splitting the commandline. Parsing a group of options: global . Applying option loglevel (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options: input file http://172.16.1.213/mjpeg. Applying option f (force format) with argument mjpeg. Successfully parsed a group of options. Opening an input file: http://172.16.1.213/mjpeg. [http @ 0x2e85fe0] request: GET /mjpeg HTTP/1.1 User-Agent: Lavf/55.41.100 Accept: */* Range: bytes=0- Connection: close Host: 172.16.1.213 [http @ 0x2e85fe0] header='HTTP/1.0 200 OK' [http @ 0x2e85fe0] http_code=200 [http @ 0x2e85fe0] header='Content-Type: multipart/x-mixed-replace;boundary=fbdr' [http @ 0x2e85fe0] header='' [mjpeg @ 0x2e859e0] Before avformat_find_stream_info() pos: 0 bytes read:629 seeks:0 [mjpeg @ 0x2e8fd60] marker=d8 avail_size_in_buf=103685 [mjpeg @ 0x2e8fd60] marker parser used 0 bytes (0 bits) [mjpeg @ 0x2e8fd60] marker=db avail_size_in_buf=103683 [mjpeg @ 0x2e8fd60] index=0 [mjpeg @ 0x2e8fd60] qscale[0]: 4 [mjpeg @ 0x2e8fd60] index=1 [mjpeg @ 0x2e8fd60] qscale[1]: 9 [mjpeg @ 0x2e8fd60] marker parser used 132 bytes (1056 bits) [mjpeg @ 0x2e8fd60] marker=dd avail_size_in_buf=103549 [mjpeg @ 0x2e8fd60] restart interval: 16 [mjpeg @ 0x2e8fd60] marker parser used 4 bytes (32 bits) [mjpeg @ 0x2e8fd60] marker=c0 avail_size_in_buf=103543 [mjpeg @ 0x2e8fd60] sof0: picture: 1280x800 [mjpeg @ 0x2e8fd60] component 0 2:1 id: 0 quant:0 [mjpeg @ 0x2e8fd60] component 1 1:1 id: 1 quant:1 [mjpeg @ 0x2e8fd60] component 2 1:1 id: 2 quant:1 [mjpeg @ 0x2e8fd60] pix fmt id 21111100 [mjpeg @ 0x2e8fd60] marker parser used 17 bytes (136 bits) [mjpeg @ 0x2e8fd60] marker=c4 avail_size_in_buf=103524 [mjpeg @ 0x2e8fd60] class=0 index=0 nb_codes=12 [mjpeg @ 0x2e8fd60] class=1 index=0 nb_codes=251 [mjpeg @ 0x2e8fd60] class=0 index=1 nb_codes=12 [mjpeg @ 0x2e8fd60] class=1 index=1 nb_codes=251 [mjpeg @ 0x2e8fd60] marker parser used 418 bytes (3344 bits) [mjpeg @ 0x2e8fd60] escaping removed 410 bytes [mjpeg @ 0x2e8fd60] marker=da avail_size_in_buf=103104 [mjpeg @ 0x2e8fd60] component: 0 [mjpeg @ 0x2e8fd60] component: 1 [mjpeg @ 0x2e8fd60] component: 2 [mjpeg @ 0x2e8fd60] marker parser used 102687 bytes (821496 bits) [mjpeg @ 0x2e8fd60] marker=d3 avail_size_in_buf=254 [mjpeg @ 0x2e8fd60] restart marker: 3 [mjpeg @ 0x2e8fd60] marker parser used 0 bytes (0 bits) [mjpeg @ 0x2e8fd60] marker=d9 avail_size_in_buf=246 [mjpeg @ 0x2e8fd60] decode frame unused 246 bytes [mjpeg @ 0x2e859e0] Probe buffer size limit of 32 bytes reached [mjpeg @ 0x2e859e0] Stream #0: not enough frames to estimate rate; consider increasing probesize [mjpeg @ 0x2e859e0] After avformat_find_stream_info() pos: 104316 bytes read:104316 seeks:0 frames:1 Input #0, mjpeg, from 'http://172.16.1.213/mjpeg': Duration: N/A, bitrate: N/A Stream #0:0, 1, 1/1200000: Video: mjpeg, yuvj422p(pc), 1280x800, 1/25, 25 tbr, 1200k tbn, 25 tbc Successfully opened the file. At least one output file must be specified [AVIOContext @ 0x2e85260] Statistics: 104316 bytes read, 0 seeks
Attachments (4)
Change History (18)
by , 11 years ago
Attachment: | arecont_vision_mjpeg.pcap added |
---|
follow-up: 3 comment:1 by , 11 years ago
Could you provide ffmpeg -i
command line and output for the working Axis camera?
by , 11 years ago
Attachment: | patchmjpeg.diff added |
---|
follow-up: 5 comment:2 by , 11 years ago
Component: | undetermined → avformat |
---|
Does attached patch make a difference for the failing camera?
follow-up: 4 comment:3 by , 11 years ago
Replying to cehoyos:
Could you provide
ffmpeg -i
command line and output for the working Axis camera?
$ ffmpeg -loglevel debug -analyzeduration 0 -probesize 32 -i http://root:root@192.168.2.120/mjpg/video.mjpg ffmpeg version N-63755-gdeadcf5 Copyright (c) 2000-2014 the FFmpeg developers built on Jun 4 2014 18:23:45 with gcc 4.7.3 (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) configuration: --enable-pic --disable-stripping --disable-doc --disable-everything --enable-protocol=file --enable-protocol=pipe --enable-protocol=http --enable-muxer=matroska --enable-muxer=mjpeg --enable-muxer=rtp --enable-demuxer=rtsp --enable-demuxer=matroska --enable-demuxer=mjpeg --enable-decoder=h264 --enable-decoder=mpeg4 --enable-decoder=mjpeg --enable-parser=h264 --enable-parser=mpeg4video --enable-parser=mjpeg --enable-encoder=mjpeg libavutil 52. 89.100 / 52. 89.100 libavcodec 55. 66.100 / 55. 66.100 libavformat 55. 42.101 / 55. 42.101 libavdevice 55. 13.101 / 55. 13.101 libavfilter 4. 5.100 / 4. 5.100 libswscale 2. 6.100 / 2. 6.100 libswresample 0. 19.100 / 0. 19.100 Splitting the commandline. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'. Reading option '-analyzeduration' ... matched as AVOption 'analyzeduration' with argument '0'. Reading option '-probesize' ... matched as AVOption 'probesize' with argument '32'. Reading option '-i' ... matched as input file with argument 'http://root:root@192.168.2.120/mjpg/video.mjpg'. Finished splitting the commandline. Parsing a group of options: global . Applying option loglevel (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options: input file http://root:root@192.168.2.120/mjpg/video.mjpg. Successfully parsed a group of options. Opening an input file: http://root:root@192.168.2.120/mjpg/video.mjpg. [http @ 0x1a68320] request: GET /mjpg/video.mjpg HTTP/1.1 User-Agent: Lavf/55.42.101 Accept: */* Range: bytes=0- Connection: close Host: 192.168.2.120 [http @ 0x1a68320] header='HTTP/1.1 401 Unauthorized' [http @ 0x1a68320] http_code=401 [http @ 0x1a68320] header='Date: Sun, 05 May 2013 17:39:16 GMT' [http @ 0x1a68320] header='Accept-Ranges: bytes' [http @ 0x1a68320] header='Connection: close' [http @ 0x1a68320] header='WWW-Authenticate: Digest realm="AXIS_00408CDBFDBA", nonce="0007fbcfY783707bc2820a745be9fb187c48dd005cd5a2", stale=FALSE, qop="auth"' [http @ 0x1a68320] header='WWW-Authenticate: Basic realm="AXIS_00408CDBFDBA"' [http @ 0x1a68320] header='Content-Length: 181' [http @ 0x1a68320] header='Content-Type: text/html; charset=ISO-8859-1' [http @ 0x1a68320] header='' [http @ 0x1a68320] request: GET /mjpg/video.mjpg HTTP/1.1 User-Agent: Lavf/55.42.101 Accept: */* Range: bytes=0- Connection: close Host: 192.168.2.120 Authorization: Digest username="root",realm="AXIS_00408CDBFDBA",nonce="0007fbcfY783707bc2820a745be9fb187c48dd005cd5a2",uri="/mjpg/video.mjpg",response="1126f53bf9df43ff0e8ee937994295da",qop="auth",cnonce="8b0e9d3d5980b00c",nc=00000001 [http @ 0x1a68320] header='HTTP/1.0 200 OK' [http @ 0x1a68320] http_code=200 [http @ 0x1a68320] header='Cache-Control: no-cache' [http @ 0x1a68320] header='Pragma: no-cache' [http @ 0x1a68320] header='Expires: Thu, 01 Dec 1994 16:00:00 GMT' [http @ 0x1a68320] header='Connection: close' [http @ 0x1a68320] header='Content-Type: multipart/x-mixed-replace; boundary=myboundary' [http @ 0x1a68320] header='' [mjpeg @ 0x1a68960] Format mjpeg probed with size=2048 and score=50 [mjpeg @ 0x1a68960] Before avformat_find_stream_info() pos: 0 bytes read:2697 seeks:0 [mjpeg @ 0x1a6abc0] marker=d8 avail_size_in_buf=6781 [mjpeg @ 0x1a6abc0] marker parser used 0 bytes (0 bits) [mjpeg @ 0x1a6abc0] marker=e0 avail_size_in_buf=6779 [mjpeg @ 0x1a6abc0] marker parser used 16 bytes (128 bits) [mjpeg @ 0x1a6abc0] marker=fe avail_size_in_buf=6761 [mjpeg @ 0x1a6abc0] marker parser used 15 bytes (120 bits) [mjpeg @ 0x1a6abc0] marker=fe avail_size_in_buf=6744 [mjpeg @ 0x1a6abc0] marker parser used 15 bytes (120 bits) [mjpeg @ 0x1a6abc0] marker=db avail_size_in_buf=6727 [mjpeg @ 0x1a6abc0] index=0 [mjpeg @ 0x1a6abc0] qscale[0]: 4 [mjpeg @ 0x1a6abc0] marker parser used 67 bytes (536 bits) [mjpeg @ 0x1a6abc0] marker=db avail_size_in_buf=6658 [mjpeg @ 0x1a6abc0] index=1 [mjpeg @ 0x1a6abc0] qscale[1]: 8 [mjpeg @ 0x1a6abc0] marker parser used 67 bytes (536 bits) [mjpeg @ 0x1a6abc0] marker=c0 avail_size_in_buf=6589 [mjpeg @ 0x1a6abc0] sof0: picture: 320x240 [mjpeg @ 0x1a6abc0] component 0 2:2 id: 0 quant:0 [mjpeg @ 0x1a6abc0] component 1 1:1 id: 1 quant:1 [mjpeg @ 0x1a6abc0] component 2 1:1 id: 2 quant:1 [mjpeg @ 0x1a6abc0] pix fmt id 22111100 [mjpeg @ 0x1a6abc0] marker parser used 17 bytes (136 bits) [mjpeg @ 0x1a6abc0] marker=c4 avail_size_in_buf=6570 [mjpeg @ 0x1a6abc0] class=0 index=0 nb_codes=12 [mjpeg @ 0x1a6abc0] marker parser used 31 bytes (248 bits) [mjpeg @ 0x1a6abc0] marker=c4 avail_size_in_buf=6537 [mjpeg @ 0x1a6abc0] class=1 index=0 nb_codes=251 [mjpeg @ 0x1a6abc0] marker parser used 181 bytes (1448 bits) [mjpeg @ 0x1a6abc0] marker=c4 avail_size_in_buf=6354 [mjpeg @ 0x1a6abc0] class=0 index=1 nb_codes=12 [mjpeg @ 0x1a6abc0] marker parser used 31 bytes (248 bits) [mjpeg @ 0x1a6abc0] marker=c4 avail_size_in_buf=6321 [mjpeg @ 0x1a6abc0] class=1 index=1 nb_codes=251 [mjpeg @ 0x1a6abc0] marker parser used 181 bytes (1448 bits) [mjpeg @ 0x1a6abc0] escaping removed 102 bytes [mjpeg @ 0x1a6abc0] marker=da avail_size_in_buf=6138 [mjpeg @ 0x1a6abc0] component: 0 [mjpeg @ 0x1a6abc0] component: 1 [mjpeg @ 0x1a6abc0] component: 2 [mjpeg @ 0x1a6abc0] marker parser used 6035 bytes (48278 bits) [mjpeg @ 0x1a6abc0] marker=d9 avail_size_in_buf=66 [mjpeg @ 0x1a6abc0] decode frame unused 66 bytes [mjpeg @ 0x1a68960] Probe buffer size limit of 32 bytes reached [mjpeg @ 0x1a68960] Stream #0: not enough frames to estimate rate; consider increasing probesize [mjpeg @ 0x1a68960] After avformat_find_stream_info() pos: 7805 bytes read:8221 seeks:0 frames:1 Input #0, mjpeg, from 'http://root:root@192.168.2.120/mjpg/video.mjpg': Duration: N/A, bitrate: N/A Stream #0:0, 1, 1/1200000: Video: mjpeg, yuvj420p(pc), 320x240 [SAR 1:1 DAR 4:3], 1/25, 25 tbr, 1200k tbn, 25 tbc Successfully opened the file. At least one output file must be specified [AVIOContext @ 0x1a67da0] Statistics: 8221 bytes read, 0 seeks
comment:4 by , 11 years ago
Replying to Krieger:
$ ffmpeg -loglevel debug -analyzeduration 0 -probesize 32 -i http://root:root@192.168.2.120/mjpg/video.mjpg
FFmpeg assumes that things ending with ".mjpg" are mjpeg but no specific detection is involved.
Does the patch make a difference?
comment:5 by , 11 years ago
Replying to cehoyos:
Does attached patch make a difference for the failing camera?
Built patched ffmpeg, but the remote camera is unreachable at the moment. Will try later.
comment:6 by , 11 years ago
The patch doesn't work.
I have extended it to dump AVProbeData this way:
int i; fprintf(stderr, "Hex: \n"); for (i = 0; i < p->buf_size; i++) fprintf(stderr, "%02x ", p->buf[i]); fprintf(stderr, "\n\n");
And here's what i get:
$ ffmpeg -loglevel debug -analyzeduration 0 -probesize 32 -i http://172.16.1.213/mjpeg ffmpeg version N-63769-gd37c620 Copyright (c) 2000-2014 the FFmpeg developers built on Jun 5 2014 15:31:27 with gcc 4.7.3 (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) configuration: --enable-pic --disable-stripping --disable-doc --disable-everything --enable-protocol=file --enable-protocol=pipe --enable-protocol=http --enable-muxer=matroska --enable-muxer=mjpeg --enable-muxer=rtp --enable-demuxer=rtsp --enable-demuxer=matroska --enable-demuxer=mjpeg --enable-decoder=h264 --enable-decoder=mpeg4 --enable-decoder=mjpeg --enable-parser=h264 --enable-parser=mpeg4video --enable-parser=mjpeg --enable-encoder=mjpeg libavutil 52. 89.100 / 52. 89.100 libavcodec 55. 66.100 / 55. 66.100 libavformat 55. 42.101 / 55. 42.101 libavdevice 55. 13.101 / 55. 13.101 libavfilter 4. 5.100 / 4. 5.100 libswscale 2. 6.100 / 2. 6.100 libswresample 0. 19.100 / 0. 19.100 Splitting the commandline. Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'. Reading option '-analyzeduration' ... matched as AVOption 'analyzeduration' with argument '0'. Reading option '-probesize' ... matched as AVOption 'probesize' with argument '32'. Reading option '-i' ... matched as input file with argument 'http://172.16.1.213/mjpeg'. Finished splitting the commandline. Parsing a group of options: global . Applying option loglevel (set logging level) with argument debug. Successfully parsed a group of options. Parsing a group of options: input file http://172.16.1.213/mjpeg. Successfully parsed a group of options. Opening an input file: http://172.16.1.213/mjpeg. [http @ 0x1af9320] request: GET /mjpeg HTTP/1.1 User-Agent: Lavf/55.42.101 Accept: */* Range: bytes=0- Connection: close Host: 172.16.1.213 [http @ 0x1af9320] header='HTTP/1.0 200 OK' [http @ 0x1af9320] http_code=200 [http @ 0x1af9320] header='Content-Type: multipart/x-mixed-replace;boundary=fbdr' [http @ 0x1af9320] header='' Hex: 2d 2d 66 62 64 72 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 69 6d 61 67 65 2f 6a 70 65 67 0d 0a 0d 0a ff d8 ff db 00 84 00 0c 06 09 09 09 06 0c 09 09 09 0c 0c 0c 0c 12 1e 12 12 0f 0f 12 24 18 1b 15 1e 2a 24 2d 2d 2a 24 2a 27 30 36 45 39 30 33 3f 33 27 2a 3c 51 3c 3f 45 48 4b 4e 4b 2d 39 54 5a 54 4b 5a 45 4b 4b 4e 01 0c 0c 0c 12 0f 12 21 12 12 21 48 30 2a 30 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 4e ff dd 00 04 00 10 ff c0 00 11 08 03 20 05 00 03 01 21 00 02 11 01 03 11 01 ff c4 01 a2 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0a 0b 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7d 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 32 81 91 a1 08 23 42 b1 c1 15 52 d1 f0 24 33 62 72 82 09 0a 16 17 18 19 1a 25 26 27 28 29 2a 34 35 36 37 38 39 3a 43 44 45 46 47 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69 6a 73 74 75 76 77 78 79 7a 83 84 85 86 87 88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da e1 e2 e3 e4 e5 e6 e7 e8 e9 ea f1 f2 f3 f4 f5 f6 f7 f8 f9 fa 01 00 03 01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0a 0b 11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 11 04 05 21 31 06 12 41 51 07 61 71 13 22 32 81 08 14 42 91 a1 b1 c1 09 23 33 52 f0 15 62 72 d1 0a 16 24 34 e1 25 f1 17 18 19 1a 26 27 28 29 2a 35 36 37 38 39 3a 43 44 45 46 47 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69 6a 73 74 75 76 77 78 79 7a 82 83 84 85 86 87 88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da e2 e3 e4 e5 e6 e7 e8 e9 ea f2 f3 f4 f5 f6 f7 f8 f9 fa ff da 00 0c 03 01 00 02 11 03 11 00 3f 00 f2 de 41 06 8e d8 e2 80 15 83 67 38 27 23 20 d2 76 e4 62 80 00 79 18 a5 0d 8c fc a0 9c 7e 54 00 9d 0d 1e a7 14 00 bc 80 39 a4 ce 7d e8 00 fa 7e 94 b8 e9 eb 40 06 72 48 e3 9f 7a 56 c8 50 08 1c f3 9a 00 42 32 49 04 7f 8d 2f 7e 06 7e 94 00 72 ad 86 fa 51 d5 88 1f 2d 00 28 04 92 09 1e c0 d2 67 6a 70 30 7f 5a 00 50 47 56 1d b0 29 5b 1d 78 18 1d b8 a0 06 b9 c9 07 fa d2 9e 79 03 b7 d6 80 13 fe 59 81 c0 e6 81 d8 6d 1d 7f 3a 00 5e 17 39 e9 4a dc a0 e4 10 3d e8 01 1f 1d 3d fb d2 9e dc 0e 3d 68 01 18 96 e4 e3 df 8a 4e 78 e7 8a 00 ff d0 f3 05 52 58 0e fe 94 98 38 fc 3b 50 00 d9 ea 7a f4 e6 8c 0e a4 93 c5 00 21 03 03 04 7a d1 c7 61 f5 26 80 15 73 93 ce 30 33 40 f6 3d 68 01 1c 32 9e 46 3e b4 2f 27 f0 ed 40 06 0e 78 1f 5a 30 49 c6 05 00 21 1e f4 a3 8e dd e8 00 39 db d3 1d f1 41 ce 33 c1 f7 a0 00 74 c7 19 a4 cf a7 5a 00 5e b9 34 64 f1 9c 1a 00 41 ef 47 6e 94 00 0e bc 74 a5 cf 38 ce 68 01 32 68 1c 9e 79 a0 03 07 d3 ad 1c 8f f1 a0 00 d2 92 49 cf 7a 00 0e 4f 34 30 da 30 47 5e 68 03 ff d1 f2 e6 20 81 47 6e 9d 3d e8 00 1e f4 30 c7 41 c5 00 0d db 8a 46 a0 03 f0 e6 94 e0 f2 07 e1 40 01 0c 49 27 b5 28 19 7c 67 83 dc d0 00 d9 1c 12 0e 07 14 8b c1 f4 34 00 03 c1 c1 22 81 b7 6f af bd 00 07 20 62 97 e6 2b f4 ed 40 09 82 38 20 1f 7a 08 e2 80 17 9e 0e 3a 50 e3 07 a6 3d a8 00 60 0e 40 3f 9d 34 67 1f 4e 68 01 cb 80 3b 67 d6 85 42 c7 00 66 80 01 d0 f3 49 93 8c 7e 74 00 67 20 81 4b d3 8e 0d 00 0a 79 e6 83 9d b8 c0 c0 14 00 70 41 ef 81 9a 41 82 06 48 c5 00 7f ff d2 f2 e1 90 38 23 8e d4 a9 92 70 28 00 39 0d 8e 98 a6 fb 62 80 15 b1 80 06 39 ed 46 18 f1 83 c5 00 1d a9 39 c6 28 01 47 27 06 93 3c 50 03 87 4c 71 cf ad 20 24 7f 9e b4 00 13 c7 f4 14 80 80 3a 50 02 8c 12 07 4f 7a 53 c7 7c 7d 28 01 a7 83 4a 09 14 00 72 3a 50 4f e1 9a 00 5c 93 96 ea 69 39 cf 51 c5 00 19 e3 82 28 1d 78 a0 00 74 e4 8a 4e 33 8e a2 80 03 d7 8a 00 e3 b5 00 1c e3 34 1e 4f a9 a0 05 39 ce 33 48 07 f2 ef 40 1f ff d3 f2 e0 32 38 a4 1c f0 4d 00 28 24 0e dc 52 0e b9 38 a0 00 0f 6c d1 82 0e 68 00 fa d1 8c e7 1d 3d e8 01 46 7d 28 e4 1f 4a 00 09 07 02 82 4e 31 9c d0 00 b8 6e e0 62 90 65 5b 3d c5 00 1d 45 27 6e b9 a0 05 23 d7 f5 a3 8c 73 c1 a0 03 1f 4a 01 20 fe 94 00 0e 0e 78 34 1f af 14 00 77 a3 8c 72 39 a0 05 3d 3f c6 90 71 d3 8a 00 07 07 8e 28 07 f1 a0 00 76 34 0c 7d 28 00 e9 de 80 33 e9 40 a5 15 24 e3 25 74 cf ff d4 f2 e1 d3 a5 26 3e 6e 94 00 a7 3f fd 6a 08 eb c6 0d 00 21 f7 a3 de 80 02 7d a8 fe 1e f8 a0 05 24 93 f3 13 47 45 fe 54 00 67 03 a7 5a 06 3a e3 9a 00 0f 3d 3b 52 11 8e b4 00 1e 05 2e 79 e3 8a 00 09 24 f3 41 cf 22 80 0c fc b8 3f 81 a0 74 1c 71 40 01 3c 72 3f 5a 07 dd 24 8e 28 00 24 e3 8a 51 91 d3 a9 a0 00 36 0f 03 a7 34 bb b2 a4 63 8e bc 0a 00 6e 7d 85 2e 4a e0 a9 e3 34 00 bb b3 f3 1c 0a 6f 3c 10 79 a0 05 e0 67 3d ba 50 78 c0 27 f2 a0 0f ff d5 f2 f5 eb d3 83 ed da 82 b8 fe 9e f4 00 37 03 18 eb cd 21 3f 2e 33 d6 80 02 00 03 fc 69 31 de 80 1d 9f 94 a8 3c 1e 69 49 e4 60 73 c5 00 21 3c 70 79 26 90 8f 40 78 a0 00 1c 1c 8e 3e 94 64 96 ce 39 f6 a0 00 67 18 19 a0 0c 75 eb 40 02 fd e1 93 47 00 f4 34 00 11 9e 7f 95 00 64 f4 a0 00 83 8a 0e 3b 1f c6 80 05 1c f3 46 49 cf 4e 28 01 30 00 fa d1 8a 00 00 27 a0 a0 03 d4 50 02 73 93 4a 4d 00 25 2f 3d 4f 7a 00 3b f3 47 bf bd 00 7f ff d6 f2 e6 3c fb 50 3a f3 c6 7d a8 01 41 1d 31 fd 28 18 20 e4 13 8e 78 a0 06 9a 51 d0 9a 00 43 f9 1a 51 d3 a7 4a 00 39 20 f3 41 cf 53 9a 00 43 fa 7b d2 83 8c 63 20 d0 02 8c 63 81 9e e7 26 93 db 14 00 00 7a 75 07 b0 34 a7 ee f7 f6 34 00 dc 67 a5 29 07 e9 40 00 2c 40 14 ac 5b 20 1f d2 80 02 ee 55 54 9e 14 71 ed 43 13 b7 07 1f 5a 00 4c 7b 51 ce 31 8f ce 80 17 2c d8 00 0e 3a 0a 42 08 14 00 0c 8e bd 29 c4 67 a0 f7 a0 06 1e 98 ed 4e cf 07 39 cd 00 00 f1 ce 0f 18 14 2f 4c 91 9f c6 80 3f ff d7 f2 ec 73 c0 a5 e0 73 d3 1c 66 80 00 49 63 c7 5a 0e 06 32 0d 00 21 07 3c 77 34 11 f5 cd 00 1c f5 cd 1d 41 39 a0 00 9e 79 c7 d6 86 39 fb a3 ad 00 1c fb 50 47 cb 90 bf 8d 00 1f 95 28 dd 8c 83 8c f1 40 08 a3 b5 1c f5 3d f8 a0 04 6f bc 68 1e a6 80 14 75 34 63 03 3c 50 02 28 24 91 c0 fa d2 9e 47 1f 8d 00 21 1c 7d 69 79 c7 1d a8 00 c7 f9 26 8d dd 33 da 80 0e a0 e3 34 72 00 e9 40 08 73 d4 d1 9c 63 8a 00 32 47 ad 2f 24 f1 cd 00 7f ff d0 f2 e0 18 0c d0 72 09 a0 04 1c d2 91 c7 5e dd e8 01 06 09 c1 e2 94 e4 9e 94 00 98 3e 94 72 47 d2 80 17 d3 14 9d bb 50 00 3d 45 1f 85 00 04 71 9a 09 e7 a5 00 18 3d 68 ed 40 00 Hex: 2d 2d 66 62 64 72 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 69 6d 61 67 65 2f 6a 70 65 67 0d 0a 0d 0a ff d8 ff db 00 84 00 0c 06 09 09 09 06 0c 09 09 09 0c 0c 0c 0c 12 1e 12 12 0f 0f 12 24 18 1b 15 1e 2a 24 2d 2d 2a 24 2a 27 30 36 45 39 30 33 3f 33 27 2a 3c 51 3c 3f 45 48 4b 4e 4b 2d 39 54 5a 54 4b 5a 45 4b 4b 4e 01 0c 0c 0c 12 0f 12 21 12 12 21 48 30 2a 30 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 4e ff dd 00 04 00 10 ff c0 00 11 08 03 20 05 00 03 01 21 00 02 11 01 03 11 01 ff c4 01 a2 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0a 0b 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 01 7d 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 32 81 91 a1 08 23 42 b1 c1 15 52 d1 f0 24 33 62 72 82 09 0a 16 17 18 19 1a 25 26 27 28 29 2a 34 35 36 37 38 39 3a 43 44 45 46 47 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69 6a 73 74 75 76 77 78 79 7a 83 84 85 86 87 88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da e1 e2 e3 e4 e5 e6 e7 e8 e9 ea f1 f2 f3 f4 f5 f6 f7 f8 f9 fa 01 00 03 01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0a 0b 11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 11 04 05 21 31 06 12 41 51 07 61 71 13 22 32 81 08 14 42 91 a1 b1 c1 09 23 33 52 f0 15 62 72 d1 0a 16 24 34 e1 25 f1 17 18 19 1a 26 27 28 29 2a 35 36 37 38 39 3a 43 44 45 46 47 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 68 69 6a 73 74 75 76 77 78 79 7a 82 83 84 85 86 87 88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da e2 e3 e4 e5 e6 e7 e8 e9 ea f2 f3 f4 f5 f6 f7 f8 f9 fa ff da 00 0c 03 01 00 02 11 03 11 00 3f 00 f2 de 41 06 8e d8 e2 80 15 83 67 38 27 23 20 d2 76 e4 62 80 00 79 18 a5 0d 8c fc a0 9c 7e 54 00 9d 0d 1e a7 14 00 bc 80 39 a4 ce 7d e8 00 fa 7e 94 b8 e9 eb 40 06 72 48 e3 9f 7a 56 c8 50 08 1c f3 9a 00 42 32 49 04 7f 8d 2f 7e 06 7e 94 00 72 ad 86 fa 51 d5 88 1f 2d 00 28 04 92 09 1e c0 d2 67 6a 70 30 7f 5a 00 50 47 56 1d b0 29 5b 1d 78 18 1d b8 a0 06 b9 c9 07 fa d2 9e 79 03 b7 d6 80 13 fe 59 81 c0 e6 81 d8 6d 1d 7f 3a 00 5e 17 39 e9 4a dc a0 e4 10 3d e8 01 1f 1d 3d fb d2 9e dc 0e 3d 68 01 18 96 e4 e3 df 8a 4e 78 e7 8a 00 ff d0 f3 05 52 58 0e fe 94 98 38 fc 3b 50 00 d9 ea 7a f4 e6 8c 0e a4 93 c5 00 21 03 03 04 7a d1 c7 61 f5 26 80 15 73 93 ce 30 33 40 f6 3d 68 01 1c 32 9e 46 3e b4 2f 27 f0 ed 40 06 0e 78 1f 5a 30 49 c6 05 00 21 1e f4 a3 8e dd e8 00 39 db d3 1d f1 41 ce 33 c1 f7 a0 00 74 c7 19 a4 cf a7 5a 00 5e b9 34 64 f1 9c 1a 00 41 ef 47 6e 94 00 0e bc 74 a5 cf 38 ce 68 01 32 68 1c 9e 79 a0 03 07 d3 ad 1c 8f f1 a0 00 d2 92 49 cf 7a 00 0e 4f 34 30 da 30 47 5e 68 03 ff d1 f2 e6 20 81 47 6e 9d 3d e8 00 1e f4 30 c7 41 c5 00 0d db 8a 46 a0 03 f0 e6 94 e0 f2 07 e1 40 01 0c 49 27 b5 28 19 7c 67 83 dc d0 00 d9 1c 12 0e 07 14 8b c1 f4 34 00 03 c1 c1 22 81 b7 6f af bd 00 07 20 62 97 e6 2b f4 ed 40 09 82 38 20 1f 7a 08 e2 80 17 9e 0e 3a 50 e3 07 a6 3d a8 00 60 0e 40 3f 9d 34 67 1f 4e 68 01 cb 80 3b 67 d6 85 42 c7 00 66 80 01 d0 f3 49 93 8c 7e 74 00 67 20 81 4b d3 8e 0d 00 0a 79 e6 83 9d b8 c0 c0 14 00 70 41 ef 81 9a 41 82 06 48 c5 00 7f ff d2 f2 e1 90 38 23 8e d4 a9 92 70 28 00 39 0d 8e 98 a6 fb 62 80 15 b1 80 06 39 ed 46 18 f1 83 c5 00 1d a9 39 c6 28 01 47 27 06 93 3c 50 03 87 4c 71 cf ad 20 24 7f 9e b4 00 13 c7 f4 14 80 80 3a 50 02 8c 12 07 4f 7a 53 c7 7c 7d 28 01 a7 83 4a 09 14 00 72 3a 50 4f e1 9a 00 5c 93 96 ea 69 39 cf 51 c5 00 19 e3 82 28 1d 78 a0 00 74 e4 8a 4e 33 8e a2 80 03 d7 8a 00 e3 b5 00 1c e3 34 1e 4f a9 a0 05 39 ce 33 48 07 f2 ef 40 1f ff d3 f2 e0 32 38 a4 1c f0 4d 00 28 24 0e dc 52 0e b9 38 a0 00 0f 6c d1 82 0e 68 00 fa d1 8c e7 1d 3d e8 01 46 7d 28 e4 1f 4a 00 09 07 02 82 4e 31 9c d0 00 b8 6e e0 62 90 65 5b 3d c5 00 1d 45 27 6e b9 a0 05 23 d7 f5 a3 8c 73 c1 a0 03 1f 4a 01 20 fe 94 00 0e 0e 78 34 1f af 14 00 77 a3 8c 72 39 a0 05 3d 3f c6 90 71 d3 8a 00 07 07 8e 28 07 f1 a0 00 76 34 0c 7d 28 00 e9 de 80 33 e9 40 a5 15 24 e3 25 74 cf ff d4 f2 e1 d3 a5 26 3e 6e 94 00 a7 3f fd 6a 08 eb c6 0d 00 21 f7 a3 de 80 02 7d a8 fe 1e f8 a0 05 24 93 f3 13 47 45 fe 54 00 67 03 a7 5a 06 3a e3 9a 00 0f 3d 3b 52 11 8e b4 00 1e 05 2e 79 e3 8a 00 09 24 f3 41 cf 22 80 0c fc b8 3f 81 a0 74 1c 71 40 01 3c 72 3f 5a 07 dd 24 8e 28 00 24 e3 8a 51 91 d3 a9 a0 00 36 0f 03 a7 34 bb b2 a4 63 8e bc 0a 00 6e 7d 85 2e 4a e0 a9 e3 34 00 bb b3 f3 1c 0a 6f 3c 10 79 a0 05 e0 67 3d ba 50 78 c0 27 f2 a0 0f ff d5 f2 f5 eb d3 83 ed da 82 b8 fe 9e f4 00 37 03 18 eb cd 21 3f 2e 33 d6 80 02 00 03 fc 69 31 de 80 1d 9f 94 a8 3c 1e 69 49 e4 60 73 c5 00 21 3c 70 79 26 90 8f 40 78 a0 00 1c 1c 8e 3e 94 64 96 ce 39 f6 a0 00 67 18 19 a0 0c 75 eb 40 02 fd e1 93 47 00 f4 34 00 11 9e 7f 95 00 64 f4 a0 00 83 8a 0e 3b 1f c6 80 05 1c f3 46 49 cf 4e 28 01 30 00 fa d1 8a 00 00 27 a0 a0 03 d4 50 02 73 93 4a 4d 00 25 2f 3d 4f 7a 00 3b f3 47 bf bd 00 7f ff d6 f2 e6 3c fb 50 3a f3 c6 7d a8 01 41 1d 31 fd 28 18 20 e4 13 8e 78 a0 06 9a 51 d0 9a 00 43 f9 1a 51 d3 a7 4a 00 39 20 f3 41 cf 53 9a 00 43 fa 7b d2 83 8c 63 20 d0 02 8c 63 81 9e e7 26 93 db 14 00 00 7a 75 07 b0 34 a7 ee f7 f6 34 00 dc 67 a5 29 07 e9 40 00 2c 40 14 ac 5b 20 1f d2 80 02 ee 55 54 9e 14 71 ed 43 13 b7 07 1f 5a 00 4c 7b 51 ce 31 8f ce 80 17 2c d8 00 0e 3a 0a 42 08 14 00 0c 8e bd 29 c4 67 a0 f7 a0 06 1e 98 ed 4e cf 07 39 cd 00 00 f1 ce 0f 18 14 2f 4c 91 9f c6 80 3f ff d7 f2 ec 73 c0 a5 e0 73 d3 1c 66 80 00 49 63 c7 5a 0e 06 32 0d 00 21 07 3c 77 34 11 f5 cd 00 1c f5 cd 1d 41 39 a0 00 9e 79 c7 d6 86 39 fb a3 ad 00 1c fb 50 47 cb 90 bf 8d 00 1f 95 28 dd 8c 83 8c f1 40 08 a3 b5 1c f5 3d f8 a0 04 6f bc 68 1e a6 80 14 75 34 63 03 3c 50 02 28 24 91 c0 fa d2 9e 47 1f 8d 00 21 1c 7d 69 79 c7 1d a8 00 c7 f9 26 8d dd 33 da 80 0e a0 e3 34 72 00 e9 40 08 73 d4 d1 9c 63 8a 00 32 47 ad 2f 24 f1 cd 00 7f ff d0 f2 e0 18 0c d0 72 09 a0 04 1c d2 91 c7 5e dd e8 01 06 09 c1 e2 94 e4 9e 94 00 98 3e 94 72 47 d2 80 17 d3 14 9d bb 50 00 3d 45 1f 85 00 04 71 9a 09 e7 a5 00 18 3d 68 ed 40 00 1d 80 a3 9a 00 0f 53 91 49 df a5 00 2f 1c 50 46 39 f5 a0 04 1c 91 93 81 4a 73 40 01 a2 80 17 f0 fd 29 a7 23 82 28 00 f6 ed 4b 93 40 09 4a 3d 3d 45 00 7f ff d1 f2 e1 f4 a3 04 0f 5a 00 31 93 ed da 94 01 8c 63 3f 8d 00 34 83 f9 53 b8 d9 9a 00 4c 7e 54 a7 76 00 23 f3 a0 04 c6 49 20 8e 06 69 28 00 00 8e 79 a7 61 b1 b8 e3 9e 73 40 08 c0 03 8a 42 49 39 24 9f ad 00 1e e0 0a 5c 75 e8 31 40 00 38 e9 45 00 1e f9 a4 3d 3d 31 40 0a 06 71 ef 48 73 92 28 00 34 7f 4a 00 0d 03 8a 00 3f 0a 06 7a 0a 00 0f 27 27 9a 5e ad 9e d4 00 29 e3 90 48 cf 22 8f 5f d0 50 07 ff d2 f2 d0 48 3c fa 50 68 01 49 e7 23 39 cf ad 03 f0 a0 05 52 41 e0 91 41 c9 00 e4 e7 de 80 10 e3 1c 9e 69 00 e6 80 17 1e fd 68 ed d0 e0 d0 02 03 db 3c 52 e3 07 ad 00 07 25 b2 a3 f0 1d a9 49 24 1c f6 ea 28 01 3a 70 30 73 4a c3 8c f1 c8 a0 04 20 64 60 71 e9 41 e3 80 68 00 03 24 8c f1 46 30 b9 c5 00 1c 75 c5 21 fc a8 01 4a e0 e4 f4 f6 a4 1e dc 50 02 e7 6f 2b d4 f7 a4 19 1c 60 fd 28 00 c1 24 f1 cd 14 00 7a 0a 53 fa 7a 50 02 60 66 8f e1 a0 0f ff d3 f2 da 52 3d f2 4f 6a 00 07 51 91 4b 82 54 63 9f 6a 00 43 81 9a 43 9c d0 00 7a 66 97 ab 73 c6 68 01 06 07 6a 53 92 30 78 c5 00 20 c6 30 47 e3 4a 07 b7 d6 80 01 c9 f4 a0 73 9f 5a 00 3b 73 f8 51 8c 8c fe 94 00 9d f8 ed 4a 7e a6 80 01 81 d4 67 eb 4e 93 0c ff 00 2a e3 db 3d e8 01 a4 93 d4 9e 3d 68 c1 df c7 51 40 0a 0e 38 38 fa d2 64 6d 23 a5 00 00 70 70 68 e7 3e 99 a0 00 fd dc d0 72 4f 1f ce 80 0c 0d a3 b9 a5 c6 3a fe 34 00 87 9c 71 9a 09 e2 80 3f ff d4 f2 d3 cf 4c e2 97 19 1d 45 00 1c 11 81 f9 52 71 db ad 00 2e 49 38 39 1d f1 41 24 f3 40 09 db 8a 5c 71 cd 00 0a 40 e3 a7 bd 20 ce 7a d0 01 4a 30 3f c2 80 13 8a 08 e0 50 02 8e 3d bd 68 c6 7d fd e8 01 1b 96 a5 c7 7e d4 00 73 9e 3f 3a 43 d0 d0 00 7a 74 c5 00 1c f1 40 01 e2 95 46 47 b8 a0 04 1d 0e 3f 2a 39 24 e3 a0 a0 05 c8 cf e1 49 8e 38 cd 00 19 e3 14 6d e9 fa d0 01 db 02 94 e3 00 74 a0 0f ff d5 f2 d1 91 46 46 30 73 f5 a0 03 07 d2 8c 11 c9 a0 04 a5 3d b0 49 34 00 ab 80 3a f5 a4 3d 05 00 20 a5 e3 b7 e3 9a 00 3a 75 a0 1e 98 38 23 bd 00 28 dc 49 22 90 9e 28 00 c9 a2 80 13 b5 14 00 7a 9a 39 cd 00 2f f4 a3 92 4d 00 25 2f 19 a0 04 02 8a 00 30 4d 14 00 76 a5 23 1d 68 00 e4 f6 a4 c1 fc a8 03 ff d6 f2 f5 27 d7 06 94 ee c1 0c 71 cf 3c 50 00 40 f5 1c 52 60 93 d7 3e f4 00 bd 06 73 cf 61 4d 19 27 b7 14 00 e1 81 d1 b2 7a 9e d4 85 71 cf 40 7d 45 00 0d 96 e6 81 91 83 40 0b d3 27 1f 8e 29 30 02 82 0f 27 ae 47 4a 00 39 e4 7f 3a 42 48 5c 7a fb 50 00 09 c6 33 8f a7 7a 51 8c 50 02 3e 33 c1 c8 fa 51 c1 18 f6 ef 40 0a c7 20 01 c0 f4 a0 00 39 38 eb d2 80 01 df d2 94 00 57 df dc 74 a0 04 2a 47 52 0e 29 00 c9 f4 a0 00 af cb 9c 8a 00 c8 cf 14 00 84 7a 9a 5f e0 e9 40 03 67 1d 29 0f 41 92 72 38 e9 40 0b cf 4a 56 18 50 41 a0 0f ff d7 f2 e2 38 fb dc 51 f9 fe 54 00 84 8c 8c fe 34 1c 63 ad 00 03 eb 46 68 01 41 1d 46 28 e0 8e 78 3d a8 00 1e c6 90 f5 34 00 ab c7 14 0f eb d6 80 0e ab c7 41 df 14 a5 b8 fe 1c fd 28 01 3f 84 f3 46 06 7a e4 50 02 8c 0e a4 fe 54 99 eb 9e 68 00 ed db 8a 08 f7 1f 95 00 2f ae 31 c8 e6 90 f6 14 00 83 83 cd 2f 18 c8 cd 00 21 eb 4b 83 c1 18 f5 a0 03 df d6 90 fd 71 ed 8a 00 07 27 d3 de 97 19 39 27 34 00 1e c7 39 27 db a5 2e 3b 12 05 00 7f ff d0 f2 dc 73 d6 94 8e 94 00 ee 48 c8 c0 cf 5a 55 5c f2 48 fc a8 01 08 01 72 39 fc 29 1c e4 e0 e3 34 00 1c 75 19 a1 b1 80 31 82 28 01 17 af 7c 77 c0 a5 1f 74 9c 8a 00 14 65 80 c8 07 3e 94 77 2d 9e 94 00 a7 86 ce 0e 05 27 07 d0 13 dc d0 02 63 3c 93 d6 94 e0 f0 78 f7 a0 00 71 eb cf ad 26 32 79 e2 80 0c fb 8a 07 dd ce 68 01 50 e4 11 c0 ef 46 70 08 e3 ad 00 00 71 c7 53 eb 48 79 14 00 bc 76 c6 7a 52 15 65 3b 4e 46 3d a8 00 53 81 8c 73 9e a6 95 b2 dc 9c 75 ed c5 00 00 8d b8 e3 f2 a0 9d cd 9c 0d c7 d3 00 7e 54 00 83 af 34 0c 67 9a 00 ff d1 f2 f7 39 ce 78 14 d3 ed 40 0b cf 7e 94 60 f1 40 03 67 34 00 4e 17 d6 80 01 8c 6d 3c 73 d6 8f ba 0f 3c 9f 6a 00 43 4a 41 03 23 bd 00 20 c0 39 a5 27 3c 60 7a d0 00 79 1c 9c 7e 14 30 a0 00 e7 b0 e6 94 e4 a6 73 c5 00 20 3c 76 a0 92 4f 5e 94 00 83 18 3d 69 4e 0a f5 c6 39 c5 00 20 19 cf 5a 55 24 0c 03 d6 80 14 95 dc 36 8d a0 7a f3 9a 42 3e 6c 03 f8 d0 01 d3 9c f5 e2 81 81 df f4 a0 04 e3 be 73 46 3d 0d 00 2f 41 c6 29 06 7a 1a 00 52 49 eb d3 da 93 b7 26 80 3f ff d2 f2 de 71 8c f1 46 3b f1 40 0b ef d0 7f 3a 08 19 e4 d0 00 b8 ce 33 d6 90 e0 74 a0 03 bf 5a 3f 87 9a 00 0f 03 8a 50 3a f2 3d 68 01 0e 29 71 8e f4 00 da 71 da 1b 0a 72 3d 48 a0 03 0b b7 be 69 01 da c0 8a 00 3e b4 a7 6e 33 91 9f 4c 50 02 1c 62 8c 50 01 f4 a3 b7 6a 00 0f 1d b0 68 eb c7 6a 00 31 c1 c1 a3 b7 6a 00 3b d0 72 3a d0 01 c5 27 7c e6 80 14 e7 1d 73 47 38 f4 cd 00 7f ff d3 f3 0f 94 f4 eb c7 5a 4c 67 38 fd 28 00 1d 09 f4 fc 29 78 c0 e4 e7 bd 00 03 ae 76 fb 50 dc 00 07 af 4a 00 4f bc 73 9e 9c d2 b1 dd 8c 0f a8 14 00 72 a7 9e dd 33 cd 07 9e 98 c8 a0 04 04 05 e4 7b 75 a7 64 ed 2e 40 c6 7b d0 03 72 3b 8f ca 9c 84 2b 0d c9 bb d5 49 38 3f 95 00 37 3c 9e 00 07 b5 2e 70 46 01 e3 d2 80 17 23 d3 a5 37 d7 b0 ed c5 00 3b 80 7a 0f 5e 79 06 9a 5b 80 0f 34 00 a0 1c 9c 0c 63 d7 8a 3e 6c e7 6e 01 e8 4f 02 80 03 c7 1e bd 40 a5 05 41 e0 1e 9e b4 00 9c 0c 64 73 de 97 a7 ca 40 cf 5a 00 4c 12 a3 2a bd 7a d2 71 b7 d2 80 1c 80 b1 0a 31 9a 4c 82 79 03 9e f4 00 dc 0e 8b c9 3d a9 db 70 3d 7b f1 40 1f ff d4 f2 f2 78 cf 19 1d 85 20 e9 81 8f ad 00 19 1c f4 a0 63 d3 39 a0 05 38 23 38 c7 6e 94 83 1d c5 00 1c 63 9a 06 02 f0 28 01 33 4b 81 d0 50 01 d0 9a 1b 91 92 68 01 30 71 9a 70 3c 60 50 03 4f a6 3a 50 71 d4 66 80 17 3d ce 29 07 20 f1 40 0a a3 9c e0 51 81 eb 40 06 47 f7 7a 51 91 d3 6f e3 9a 00 09 e7 a0 e3 d0 51 f4 14 00 29 e0 f0 28 c8 27 24 70 28 01 3b e3 d2 97 b6 00 04 fb d0 02 e7 b1 18 1e c3 bd 20 18 34 00 1e 79 02 94 e0 81 e9 de 80 3f ff d5 f2 f1 b7 18 c6 4d 07 1d 0f 18 a0 05 66 27 80 07 1c 51 b8 ed db d3 fa d0 02 64 00 78 1f 9d 00 81 ce 3f 4a 00 53 db a1 a4 63 9e c0 50 01 bc f0 3a e3 8a 55 20 21 05 7a 9a 00 17 a8 c1 c7 ae 28 1c 30 3f ce 80 10 b0 2a 49 1c f4 a4 e3 a0 1d b9 c9 a0 05 c0 c6 4e 73 d8 76 a5 0d ed c7 ad 00 27 5c 9e 94 0f bb c0 07 de 80 11 b3 9c ff 00 2a 70 3d 46 05 00 37 23 1f 5e b4 77 e9 f9 50 02 8f bb c8 fc 69 3a 37 20 8a 00 3a d0 32 7a 0e 9d e8 01 55 87 3c 03 9f 5e d4 0c 01 c8 a0 04 38 c7 a7 b5 07 a7 a8 a0 03 3e b4 e6 62 0e 47 e1 8a 00 ff d6 f2 e0 7b e0 1c d0 3a 12 30 28 01 0f e7 4b fc 3d 33 9f d2 80 17 77 ca 54 a8 fe ... ...
Now compare this with network traffic:
# ngrep -t -e -d any -x host 172.16.1.213 interface: any filter: (ip or ip6) and ( host 172.16.1.213 ) # T 2014/06/05 15:27:17.421299 172.17.1.54:58380 -> 172.16.1.213:80 [S] # T 2014/06/05 15:27:17.592837 172.16.1.213:80 -> 172.17.1.54:58380 [AS] # T 2014/06/05 15:27:17.592855 172.17.1.54:58380 -> 172.16.1.213:80 [A] # T 2014/06/05 15:27:17.592959 172.17.1.54:58380 -> 172.16.1.213:80 [AP] 47 45 54 20 2f 6d 6a 70 65 67 20 48 54 54 50 2f GET /mjpeg HTTP/ 31 2e 31 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3a 1.1..User-Agent: 20 4c 61 76 66 2f 35 35 2e 34 32 2e 31 30 31 0d Lavf/55.42.101. 0a 41 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 52 61 .Accept: */*..Ra 6e 67 65 3a 20 62 79 74 65 73 3d 30 2d 0d 0a 43 nge: bytes=0-..C 6f 6e 6e 65 63 74 69 6f 6e 3a 20 63 6c 6f 73 65 onnection: close 0d 0a 48 6f 73 74 3a 20 31 37 32 2e 31 36 2e 31 ..Host: 172.16.1 2e 32 31 33 0d 0a 0d 0a .213.... # T 2014/06/05 15:27:17.968772 172.16.1.213:80 -> 172.17.1.54:58380 [A] 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b HTTP/1.0 200 OK # T 2014/06/05 15:27:17.968789 172.17.1.54:58380 -> 172.16.1.213:80 [A] # T 2014/06/05 15:27:18.135429 172.16.1.213:80 -> 172.17.1.54:58380 [A] 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 ..Content-Type: 6d 75 6c 74 69 70 61 72 74 2f 78 2d 6d 69 78 65 multipart/x-mixe 64 2d 72 65 70 6c 61 63 65 3b 62 6f 75 6e 64 61 d-replace;bounda 72 79 3d 66 62 64 72 0d 0a 0d 0a 2d 2d 66 62 64 ry=fbdr....--fbd 72 0d 0a 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a r..Content-Type: 20 69 6d 61 67 65 2f 6a 70 65 67 0d 0a 0d 0a ff image/jpeg..... d8 ff db 00 84 00 0c 06 09 09 09 06 0c 09 09 09 ................ 0c 0c 0c 0c 12 1e 12 12 0f 0f 12 24 18 1b 15 1e ...........$.... 2a 24 2d 2d 2a 24 2a 27 30 36 45 39 30 33 3f 33 *$--*$*'06E903?3 27 2a 3c 51 3c 3f 45 48 4b 4e 4b 2d 39 54 5a 54 '*<Q<?EHKNK-9TZT 4b 5a 45 4b 4b 4e 01 0c 0c 0c 12 0f 12 21 12 12 KZEKKN.......!.. 21 48 30 2a 30 48 48 48 48 48 48 48 48 48 48 48 !H0*0HHHHHHHHHHH 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 HHHHHHHHHHHHHHHH 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 HHHHHHHHHHHHHHHH 48 48 48 48 48 48 4e ff dd 00 04 00 10 ff c0 00 HHHHHHN......... 11 08 03 20 05 00 03 01 21 00 02 11 01 03 11 01 ... ....!....... ff c4 01 a2 00 00 01 05 01 01 01 01 01 01 00 00 ................ 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0a ................ 0b 10 00 02 01 03 03 02 04 03 05 05 04 04 00 00 ................ 01 7d 01 02 03 00 04 11 05 12 21 31 41 06 13 51 .}........!1A..Q 61 07 22 71 14 32 81 91 a1 08 23 42 b1 c1 15 52 a."q.2....#B...R d1 f0 24 33 62 72 82 09 0a 16 17 18 19 1a 25 26 ..$3br........%& 27 28 29 2a 34 35 36 37 38 39 3a 43 44 45 46 47 '()*456789:CDEFG 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 67 HIJSTUVWXYZcdefg 68 69 6a 73 74 75 76 77 78 79 7a 83 84 85 86 87 hijstuvwxyz..... 88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 a4 a5 ................ a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba c2 c3 ................ c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 d9 da ................ e1 e2 e3 e4 e5 e6 e7 e8 e9 ea f1 f2 f3 f4 f5 f6 ................ f7 f8 f9 fa 01 00 03 01 01 01 01 01 01 01 01 01 ................ 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0a ................ 0b 11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 ................ 02 77 00 01 02 03 11 04 05 21 31 06 12 41 51 07 .w.......!1..AQ. 61 71 13 22 32 81 08 14 42 91 a1 b1 c1 09 23 33 aq."2...B.....#3 52 f0 15 62 72 d1 0a 16 24 34 e1 25 f1 17 18 19 R..br...$4.%.... 1a 26 27 28 29 2a 35 36 37 38 39 3a 43 44 45 46 .&'()*56789:CDEF 47 48 49 4a 53 54 55 56 57 58 59 5a 63 64 65 66 GHIJSTUVWXYZcdef 67 68 69 6a 73 74 75 76 77 78 79 7a 82 83 84 85 ghijstuvwxyz.... 86 87 88 89 8a 92 93 94 95 96 97 98 99 9a a2 a3 ................ a4 a5 a6 a7 a8 a9 aa b2 b3 b4 b5 b6 b7 b8 b9 ba ................ c2 c3 c4 c5 c6 c7 c8 c9 ca d2 d3 d4 d5 d6 d7 d8 ................ d9 da e2 e3 e4 e5 e6 e7 e8 e9 ea f2 f3 f4 f5 f6 ................ f7 f8 f9 fa ff da 00 0c 03 01 00 02 11 03 11 00 ................ # ... ...
So AVProbeData actually starts with --fbdr\r\nContent-Type: image/jpeg\r\n\r\n
, followed by 0xff 0xd8.
follow-up: 8 comment:7 by , 11 years ago
I don't know much about html, but I think a header containing \r\n\r\n
twice is not valid / the part starting with --fbdr
is not part of the header.
comment:8 by , 11 years ago
Replying to cehoyos:
I don't know much about html, but I think a header containing
\r\n\r\n
twice is not valid / the part starting with--fbdr
is not part of the header.
I was also disappointed when i have first watched it, but that's the way how Content-Type: multipart/x-mixed-replace
works :)
comment:9 by , 11 years ago
Keywords: | http added |
---|---|
Status: | new → open |
comment:10 by , 11 years ago
Would that be a good idea to modify HTTP protocol to recognize multipart/x-mixed-replace content-type and cut off the markers and provide frames cut by those markers?
by , 11 years ago
Attachment: | 0001-Recognize-MJPEG-at-probing.patch added |
---|
comment:12 by , 11 years ago
As you explained yesterday, the correct approach is probably to patch the http protocol to interpret the header correctly.
But please feel free to send your patch to the development mailing list.
comment:13 by , 11 years ago
Autodetection was fixed by Michael in 2d3842f5
Implementing Content-Type: multipart/x-mixed-replace
for http is still a missing feature.
comment:14 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | open → closed |
it seems wget also included the Content-type in the data so its not clear that this is a bug
PCAP dump of traffic