[Libav-user] HTTP tunneling with incoming RTSP AAC stream does not work

Taha Ansari mtaha.ansari at gmail.com
Mon Oct 13 08:48:53 CEST 2014


On Mon, Oct 13, 2014 at 10:29 AM, Taha Ansari <mtaha.ansari at gmail.com> wrote:
>
> On Sat, Oct 11, 2014 at 11:59 PM, Andy Shaules <bowljoman at gmail.com> wrote:
>>
>> On 10/11/2014 3:05 AM, Taha Ansari wrote:
>>
>> Hi,
>>
>> Is there anybody out there who has faced a similar issue? I'm sure there would be... any feedback would be highly appreciated...
>>
>> On Fri, Oct 10, 2014 at 2:47 PM, Taha Ansari <mtaha.ansari at gmail.com> wrote:
>>>
>>>
>>> On Thu, Oct 9, 2014 at 6:02 PM, Taha Ansari <mtaha.ansari at gmail.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I have a specific scenario: in a restricted network environment, I have discovered sometimes there is problem with live reception of data via RTSP protocol. Reading at mailing list and other locations got me to a point where I discovered I could use HTTP tunneling to bypass proxies etc. I have upcoming two streams:
>>>>
>>>> 1- RTSP live h264 stream
>>>> 2- RTSP live AAC stream
>>>>
>>>> When I apply HTTP tunneling method with h264 data, it works without any problem. But, if I try it with AAC data, audio never gets through.
>>>>
>>>> Here is uncut console output when trying to fetch such AAC streams via RTSP protocol, while the server is at a remote location (some portions are changed to protect privacy):
>>>>
>>>> --------------*************--------------*************--------------*************
>>>> D:\....\ffmpeg-20141009-git-f6777ce-win32-shared\bin>ffpla
>>>> y -rtsp_transport http -loglevel debug rtsp://143.115.111.123:1943/a.aac
>>>> ffplay version N-66742-gf6777ce Copyright (c) 2003-2014 the FFmpeg developers
>>>>   built on Oct  8 2014 22:05:56 with gcc 4.9.1 (GCC)
>>>>   configuration: --disable-static --enable-shared --enable-gpl --enable-version3
>>>>  --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --ena
>>>> ble-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --e
>>>> nable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-lib
>>>> gsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencor
>>>> e-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enabl
>>>> e-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-l
>>>> ibtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-
>>>> libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-l
>>>> ibwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --ena
>>>> ble-zlib
>>>>   libavutil      54. 10.100 / 54. 10.100
>>>>   libavcodec     56.  4.101 / 56.  4.101
>>>>   libavformat    56.  9.100 / 56.  9.100
>>>>   libavdevice    56.  1.100 / 56.  1.100
>>>>   libavfilter     5.  1.103 /  5.  1.103
>>>>   libswscale      3.  1.100 /  3.  1.100
>>>>   libswresample   1.  1.100 /  1.  1.100
>>>>   libpostproc    53.  1.100 / 53.  1.100
>>>> [http @ 01d798e0] request: GET /a.aac HTTP/1.10KB sq=    0B f=0/0
>>>> User-Agent: Lavf/56.9.100
>>>> Range: bytes=0-
>>>> Connection: close
>>>> Host: 143.115.111.123:1943
>>>> Icy-MetaData: 1
>>>> x-sessioncookie: 85cc4e8bbbeffd24
>>>> Accept: application/x-rtsp-tunnelled
>>>> Pragma: no-cache
>>>> Cache-Control: no-cache
>>>>
>>>>
>>>> [http @ 01d798e0] header='HTTP/1.1 200 OK'    0KB sq=    0B f=0/0
>>>> [http @ 01d798e0] http_code=200
>>>> [http @ 01d798e0] header='Date: Thu, 9 Oct 2014 12:46:10 GMT'
>>>> [http @ 01d798e0] header='Server: [some server name]'
>>>> [http @ 01d798e0] header='Connection: Close'
>>>> [http @ 01d798e0] header='Content-Type: application/x-rtsp-tunnelled'
>>>> [http @ 01d798e0] header='Expires: -1'
>>>> [http @ 01d798e0] header='Cache-Control: private, max-age=0'
>>>> [http @ 01d798e0] header=''
>>>> [http @ 01d7e420] request: POST /a.aac HTTP/1.1KB sq=    0B f=0/0
>>>> User-Agent: Lavf/56.9.100
>>>> Accept: */*
>>>> Connection: close
>>>> Host: 143.115.111.123:1943
>>>> Icy-MetaData: 1
>>>> x-sessioncookie: 85cc4e8bbbeffd24
>>>> Content-Type: application/x-rtsp-tunnelled
>>>> Pragma: no-cache
>>>> Cache-Control: no-cache
>>>> Content-Length: 32767
>>>> Expires: Sun, 9 Jan 1972 00:00:00 GMT
>>>>
>>>>
>>>> [rtsp @ 01d79d00] SDP:=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
>>>> v=0
>>>> o=- 1951159390 1412858771 IN IP4 143.115.111.123
>>>> s=
>>>> c=IN IP4 0.0.0.0
>>>> t=0 0
>>>> m=audio 0 RTP/AVP 96
>>>> a=rtpmap:96 MPEG4-GENERIC/22050/2
>>>> a=fmtp:96 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdelta
>>>> length=3;config=1390;
>>>> a=control:trackID=2
>>>>
>>>> [rtsp @ 01d79d00] audio codec set to: aac
>>>> [rtsp @ 01d79d00] audio samplerate set to: 22050
>>>> [rtsp @ 01d79d00] audio channels set to: 2
>>>> [rtsp @ 01d79d00] hello state=0    0KB vq=    0KB sq=    0B f=0/0
>>>> [rtsp @ 01d79d00] method PLAY failed: 500 SERVER ERROR   0B f=0/0
>>>> [rtsp @ 01d79d00] Server: [some server name]
>>>> CSeq: 4
>>>> Cache-Control: no-cache
>>>> Date: Thu, 9 Oct 2014 12:46:12 GMT
>>>> Expires: Thu, 9 Oct 2014 12:46:12 GMT
>>>> Session: 31565451546595;timeout=30
>>>> x-Error: Failed to create audio
>>>>
>>>> rtsp://143.115.111.123:1943/a.aac: Invalid data found when processing input
>>>>
>>>>
>>>> D:\....\ffmpeg-20141009-git-f6777ce-win32-shared\bin>
>>>> --------------*************--------------*************--------------*************
>>>>
>>>> As can be seen, it fails somewhere at " method PLAY failed: 500 SERVER ERROR". Searching online for this does not give me much help, except that 500 SERVER ERROR is a general kind of error (without any details).
>>>>
>>>> This is the latest version of FFmpeg I downloaded from zeranoe builds page today...
>>>>
>>>> Has anyone experienced anything this sort before? Is there any remedy?
>>>>
>>>> Thanks in advance for any guidance...
>>>
>>>
>>>
>>> Hi,
>>>
>>> I have made little progress: if I specify "-initial_pause 1 " at command line, then after waiting for about 40 seconds, I am able to see new window pop up (the FFplay black window that shows white stuff depending upon audio signal), but this window is totally black, and even after waiting for some time, audio is never audible.
>>>
>>> Do I need to signal initial_pause to 'off', somehow?
>>>
>>> Here is updated command line with debug output (again some stuff like server IP changed intentionally):
>>>
>>> --------------*************--------------*************--------------*************
>>>
>>> D:\ffmpeg-20141009-git-f6777ce-win32-shared\bin>ffplay -loglevel debug -rtsp_transport http -initial_pause 1 rtsp://144.122.222.22:2757/a.aac
>>> ffplay version N-66742-gf6777ce Copyright (c) 2003-2014 the FFmpeg developers
>>>   built on Oct  8 2014 22:05:56 with gcc 4.9.1 (GCC)
>>>   configuration: --disable-static --enable-shared --enable-gpl --enable-version3
>>>  --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --ena
>>> ble-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --e
>>> nable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-lib
>>> gsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencor
>>> e-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enabl
>>> e-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-l
>>> ibtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-
>>> libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-l
>>> ibwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --ena
>>> ble-zlib
>>>   libavutil      54. 10.100 / 54. 10.100
>>>   libavcodec     56.  4.101 / 56.  4.101
>>>   libavformat    56.  9.100 / 56.  9.100
>>>   libavdevice    56.  1.100 / 56.  1.100
>>>   libavfilter     5.  1.103 /  5.  1.103
>>>   libswscale      3.  1.100 /  3.  1.100
>>>   libswresample   1.  1.100 /  1.  1.100
>>>   libpostproc    53.  1.100 / 53.  1.100
>>> [http @ 02239a20] request: GET /a.aac HTTP/1.10KB sq=    0B f=0/0
>>> User-Agent: Lavf/56.9.100
>>> Range: bytes=0-
>>> Connection: close
>>> Host: 144.122.222.22:2757
>>> Icy-MetaData: 1
>>> x-sessioncookie: 5210038d40d12611
>>> Accept: application/x-rtsp-tunnelled
>>> Pragma: no-cache
>>> Cache-Control: no-cache
>>>
>>>
>>> [http @ 02239a20] header='HTTP/1.1 200 OK'    0KB sq=    0B f=0/0
>>> [http @ 02239a20] http_code=200
>>> [http @ 02239a20] header='Date: Fri, 10 Oct 2014 09:39:29 GMT'
>>> [http @ 02239a20] header='Server: [some streaming server]'
>>> [http @ 02239a20] header='Connection: Close'
>>> [http @ 02239a20] header='Content-Type: application/x-rtsp-tunnelled'
>>> [http @ 02239a20] header='Expires: -1'
>>> [http @ 02239a20] header='Cache-Control: private, max-age=0'
>>> [http @ 02239a20] header=''
>>> [http @ 0223d560] request: POST /a.aac HTTP/1.1KB sq=    0B f=0/0
>>> User-Agent: Lavf/56.9.100
>>> Accept: */*
>>> Connection: close
>>> Host: 144.122.222.22:2757
>>> Icy-MetaData: 1
>>> x-sessioncookie: 5210038d40d12611
>>> Content-Type: application/x-rtsp-tunnelled
>>> Pragma: no-cache
>>> Cache-Control: no-cache
>>> Content-Length: 32767
>>> Expires: Sun, 9 Jan 1972 00:00:00 GMT
>>>
>>>
>>> [rtsp @ 02239e20] SDP:=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
>>> v=0
>>> o=- 545483151 1412933970 IN IP4 144.122.222.22
>>> s=
>>> c=IN IP4 0.0.0.0
>>> t=0 0
>>> m=audio 0 RTP/AVP 96
>>> a=rtpmap:96 MPEG4-GENERIC/22050/2
>>> a=fmtp:96 profile-level-id=1;mode=AAC-hbr;sizelength=13;indexlength=3;indexdelta
>>> length=3;config=1390;
>>> a=control:trackID=2
>>>
>>> [rtsp @ 02239e20] audio codec set to: aac
>>> [rtsp @ 02239e20] audio samplerate set to: 22050
>>> [rtsp @ 02239e20] audio channels set to: 2
>>> Input #0, rtsp, from 'rtsp://144.122.222.22:2757/a.aac':0B f=0/0
>>>   Metadata:
>>>     title           :
>>>   Duration: N/A, bitrate: N/A
>>>     Stream #0:0, 0, 1/22050: Audio: aac, 22050 Hz, stereo, fltp
>>> detected 4 logical cores
>>> [ffplay_abuffer @ 022bb880] Setting 'sample_rate' to value '22050'
>>> [ffplay_abuffer @ 022bb880] Setting 'sample_fmt' to value 'fltp'
>>> [ffplay_abuffer @ 022bb880] Setting 'channels' to value '2'
>>> [ffplay_abuffer @ 022bb880] Setting 'time_base' to value '1/22050'
>>> [ffplay_abuffer @ 022bb880] Setting 'channel_layout' to value '0x3'
>>> [ffplay_abuffer @ 022bb880] tb:1/22050 samplefmt:fltp samplerate:22050 chlayout:
>>> 0x3
>>> [ffplay_abuffersink @ 022d1100] auto-inserting filter 'auto-inserted resampler 0
>>> ' between the filter 'ffplay_abuffer' and the filter 'ffplay_abuffersink'
>>> [AVFilterGraph @ 0221e860] query_formats: 2 queried, 0 merged, 3 already done, 0
>>>  delayed
>>> [auto-inserted resampler 0 @ 022d2d00] ch:2 chl:stereo fmt:fltp r:22050Hz -> ch:
>>> 2 chl:stereo fmt:s16 r:22050Hz
>>>     nan M-A:    nan fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0
>>>
>>> D:\ffmpeg-20141009-git-f6777ce-win32-shared\bin>
>>>
>>> --------------*************--------------*************--------------*************
>>
>>
>>
>>
>> _______________________________________________
>> Libav-user mailing list
>> Libav-user at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/libav-user
>>
>> AAC works for me, but we use transport -rtsp_transport tcp flag. Maybe your server is serving RTSP TCP over HTTP.
>>
>
> Hi,
>
> Many thanks for the reply... I tried with -rtsp_transport tcp, but all i get is:
>
> Invalid data found when processing input.
>
> So if the server is causing this to happen, then maybe I have to change my server? That seems a lot of work...

Hi again,

Thinking about what you said... It is quite possible the server I am
using does not support HTTP tunneling at all. But if this were the
case, I would never be able to get the other H264 stream from server,
which is apparently coming out just fine (also a check with -loglevel
debug shows there is no issue with it).

So is it possible: server supports HTTP tunneling for H264 only, and
does not support HTTP tunneling for AAC?

Can someone please guide again? Sounds like I'm stuck!


More information about the Libav-user mailing list