Opened 12 years ago
Last modified 12 years ago
#2646 open defect
FFMPEG HTTP protocol not generation authorization line
Reported by: | Roman Gaufman | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avformat |
Version: | git-master | Keywords: | http |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description (last modified by )
I have an acti camera, I can send these headers to it to receive an MJPEG stream:
GET /cgi-bin/cmd/system?GET_STREAM HTTP/1.1 User-Agent: Mozilla/5.0 Lavf/55.8.102 Accept: */* Host: 192.168.1.40 Connection: Close Range: bytes=0- Authorization: Basic YWRtaW46MTIzNDU2
However when I run:
ffmpeg -i "http://admin:123456@192.168.1.40/cgi-bin/cmd/system?GET_STREAM"
And capture what it sends with tcpdump, I see it sends these headers:
GET /cgi-bin/cmd/system?GET_STREAM HTTP/1.1 User-Agent: Mozilla/5.0 Lavf/55.8.102 Accept: */* Range: bytes=0- Connection: close Host: 192.168.1.40
Notice there are identical except FFMPEG doesn't generate the Authorization line. Isn't it meant to?
I'm using ffmpeg version N-53816-g55121f3 compiled Jun 4 2013 on Ubuntu 13.04.
Change History (9)
comment:1 by , 12 years ago
Component: | FFmpeg → undetermined |
---|---|
Keywords: | http added |
comment:2 by , 12 years ago
Sure, here you go:
$ ffmpeg -i "http://admin:123456@192.168.1.40/cgi-bin/cmd/system?GET_STREAM"
ffmpeg version N-53816-g55121f3 Copyright (c) 2000-2013 the FFmpeg developers
built on Jun 4 2013 00:44:05 with gcc 4.7 (Ubuntu/Linaro 4.7.3-1ubuntu1)
configuration: --extra-ldflags=-ldl --enable-gpl --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-version3
libavutil 52. 34.100 / 52. 34.100
libavcodec 55. 15.100 / 55. 15.100
libavformat 55. 8.102 / 55. 8.102
libavdevice 55. 2.100 / 55. 2.100
libavfilter 3. 74.101 / 3. 74.101
libswscale 2. 3.100 / 2. 3.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 3.100 / 52. 3.100
[http @ 0x2ac75a0] HTTP error 401 Unauthorized
http://admin:123456@192.168.1.40/cgi-bin/cmd/system?GET_STREAM: Input/output error
comment:3 by , 12 years ago
Component: | undetermined → avformat |
---|---|
Status: | new → open |
Consider adding the exact type of camera that needs this http header line.
comment:4 by , 12 years ago
Description: | modified (diff) |
---|
comment:5 by , 12 years ago
The specific cameras I'm using are ACTi E32 and ACTi D71 but I'm guessing any camera that requires HTTP basic authorization will not work with FFMPEG at the moment.
comment:6 by , 12 years ago
HTTP basic authorization is supported by FFmpeg, if I understand the code correctly, 401 should make FFmpeg retry with authorization.
Do you have a possibility to make a camera visible to the internet?
comment:7 by , 12 years ago
I'm made the camera available over internet. To reproduce, please run: ffmpeg -i "http://admin:123456@proxy81.zanview.com/cgi-bin/cmd/system?GET_STREAM"
Then run: curl "http://admin:123456@proxy81.zanview.com/cgi-bin/cmd/system?GET_STREAM" >/dev/null to see it working :)
comment:8 by , 12 years ago
I unfortunately get a different error here:
$ ffmpeg -i "http://admin:123456@proxy81.zanview.com/cgi-bin/cmd/system?GET_STREAM" ffmpeg version N-53877-g3554238 Copyright (c) 2000-2013 the FFmpeg developers built on Jun 6 2013 20:05:06 with gcc 4.7 (SUSE Linux) configuration: --enable-gpl --disable-indev=jack libavutil 52. 35.100 / 52. 35.100 libavcodec 55. 15.100 / 55. 15.100 libavformat 55. 8.102 / 55. 8.102 libavdevice 55. 2.100 / 55. 2.100 libavfilter 3. 75.101 / 3. 75.101 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 libpostproc 52. 3.100 / 52. 3.100 [http @ 0x31375a0] HTTP error 502 Bad Gateway http://admin:123456@proxy81.zanview.com/cgi-bin/cmd/system?GET_STREAM: Input/output error
You could try with an older version or start debugging yourself: There is code in libavformat/http.c and libavformat/httpauth.c that should create the basic "Authorization:" line for the http header.
comment:9 by , 12 years ago
Sorry my bad! - closed the console by accident so the ssh tunnel died. I've put it in a screen session now so should be as expected now.
Replying to hackeron:
Do I understand correctly that you do not receive anything with this command?
Please provide the complete, uncut console output to make this a valid ticket.