Opened 7 years ago

Closed 7 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)

arecont_vision_mjpeg.pcap (1.1 MB ) - added by Andrey Utkin 7 years ago.
PCAP dump of traffic
arecont_vision_mjpeg.ngrep_out.gz (2.0 MB ) - added by Andrey Utkin 7 years ago.
ngrep textual output
patchmjpeg.diff (609 bytes ) - added by Carl Eugen Hoyos 7 years ago.
0001-Recognize-MJPEG-at-probing.patch (1.2 KB ) - added by Andrey Utkin 7 years ago.

Change History (18)

by Andrey Utkin, 7 years ago

Attachment: arecont_vision_mjpeg.pcap added

PCAP dump of traffic

by Andrey Utkin, 7 years ago

ngrep textual output

comment:1 by Carl Eugen Hoyos, 7 years ago

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

by Carl Eugen Hoyos, 7 years ago

Attachment: patchmjpeg.diff added

comment:2 by Carl Eugen Hoyos, 7 years ago

Component: undeterminedavformat

Does attached patch make a difference for the failing camera?

in reply to:  1 ; comment:3 by Andrey Utkin, 7 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

in reply to:  3 comment:4 by Carl Eugen Hoyos, 7 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?

in reply to:  2 comment:5 by Andrey Utkin, 7 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 Andrey Utkin, 7 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.

comment:7 by Carl Eugen Hoyos, 7 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.

in reply to:  7 comment:8 by Andrey Utkin, 7 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 Carl Eugen Hoyos, 7 years ago

Keywords: http added
Status: newopen

comment:10 by Andrey Utkin, 7 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?

comment:11 by Andrey Utkin, 7 years ago

Have extended the patch, now recognition works.

by Andrey Utkin, 7 years ago

comment:12 by Carl Eugen Hoyos, 7 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 Carl Eugen Hoyos, 7 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 Michael Niedermayer, 7 years ago

Resolution: fixed
Status: openclosed

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.