Opened 5 years ago

Closed 5 years ago

#3679 closed defect (fixed)

Some HTTP MJPEG streams are not recognized

Reported by: Krieger 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)

arecont_vision_mjpeg.pcap (1.1 MB) - added by Krieger 5 years ago.
PCAP dump of traffic
arecont_vision_mjpeg.ngrep_out.gz (2.0 MB) - added by Krieger 5 years ago.
ngrep textual output
patchmjpeg.diff (609 bytes) - added by cehoyos 5 years ago.
0001-Recognize-MJPEG-at-probing.patch (1.2 KB) - added by Krieger 5 years ago.

Change History (18)

Changed 5 years ago by Krieger

PCAP dump of traffic

Changed 5 years ago by Krieger

ngrep textual output

comment:1 follow-up: Changed 5 years ago by cehoyos

Could you provide ffmpeg -i command line and output for the working Axis camera?

Changed 5 years ago by cehoyos

comment:2 follow-up: Changed 5 years ago by cehoyos

  • Component changed from undetermined to avformat

Does attached patch make a difference for the failing camera?

comment:3 in reply to: ↑ 1 ; follow-up: Changed 5 years ago by Krieger

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 in reply to: ↑ 3 Changed 5 years ago by cehoyos

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 in reply to: ↑ 2 Changed 5 years ago by Krieger

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 Changed 5 years ago by Krieger

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.

comment:7 follow-up: Changed 5 years ago by 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.

comment:8 in reply to: ↑ 7 Changed 5 years ago by Krieger

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 Changed 5 years ago by cehoyos

  • Keywords http added
  • Status changed from new to open

comment:10 Changed 5 years ago by Krieger

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?

comment:11 Changed 5 years ago by Krieger

Have extended the patch, now recognition works.

Changed 5 years ago by Krieger

comment:12 Changed 5 years ago by cehoyos

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 Changed 5 years ago by cehoyos

Autodetection was fixed by Michael in 2d3842f5
Implementing Content-Type: multipart/x-mixed-replace for http is still a missing feature.

comment:14 Changed 5 years ago by michael

  • Resolution set to fixed
  • Status changed from open to closed

it seems wget also included the Content-type in the data so its not clear that this is a bug

Note: See TracTickets for help on using tickets.