Opened 10 years ago

Closed 8 years ago

#3845 closed defect (fixed)

[tls @ 0x7fb64af13f20] error:00000000:lib(0):func(0):reason(0) at the end of a WebM file through HTTPS

Reported by: viperfx Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: tls http mkv
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:
Near the end of a WebM file that is opened through HTTPS connection an error occurs with the following:
[tls @ 0x7fb64af13f20] error:00000000:lib(0):func(0):reason(0)

How to reproduce: (You must follow these steps to obtain the HTTPS link to reproduce the error)

Obtain the youtube audio stream link using youtube-dl (https://github.com/rg3/youtube-dl)
% youtube-dl -f 171 -g YOUTUBE_URL
where YOUTUBE_URL is the url of any youtube video. 
The youtube-dl command will print out a long URL string that you can input to FFmpeg or ffplay to notice the issue, it will be an HTTPS URL.
% ffmpeg -i "STREAM_URL"
or 
% ffplay "STREAM_URL"
Towards the end of the playback you should get the TLS error.
My FFmpeg info:
ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Aug  9 2014 10:03:55 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-ffplay --enable-libfdk-aac --enable-openssl
  libavutil      52. 66.100 / 52. 66.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  2.100 /  4.  2.100
  libavresample   1.  2.  0 /  1.  2.  0
  libswscale      2.  5.102 /  2.  5.102
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100

Output of a typical audio stream:
Input #0, matroska,webm, from 'URL':
  Metadata:
    encoder         : google
  Duration: 00:04:00.62, start: 0.000000, bitrate: 108 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)

Change History (18)

comment:1 by Carl Eugen Hoyos, 10 years ago

Is this problem reproducible with current FFmpeg git head?
To make this a valid ticket, please provide the complete, uncut console output of the current version.

comment:2 by viperfx, 10 years ago

Yes, I have compiled FFmpeg with HEAD and the error still occurs.

ffplay version 2.3.git Copyright (c) 2003-2014 the FFmpeg developers
  built on Aug 11 2014 10:26:03 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-ffplay --enable-libfdk-aac --enable-openssl
  libavutil      54.  1.100 / 54.  1.100
  libavcodec     56.  0.100 / 56.  0.100
  libavformat    56.  0.100 / 56.  0.100
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  0.100 /  5.  0.100
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  0.100 /  1.  0.100
  libpostproc    53.  0.100 / 53.  0.100
Input #0, matroska,webm, from 'URL':
  Metadata:
    encoder         : google
  Duration: 00:04:34.56, start: 0.000000, bitrate: 130 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
[tls @ 0x7f9b69707580] error:00000000:lib(0):func(0):reason(0)0/0

comment:3 by Carl Eugen Hoyos, 10 years ago

Is the problem only reproducible with ffplay or also with ffmpeg? ffplay depends on an external library that is known to contain bugs and ffplay issues are generally far more difficult to reproduce, please only report ffplay problems if they are not reproducible with ffmpeg.

in reply to:  3 comment:4 by viperfx, 10 years ago

Replying to cehoyos:

Is the problem only reproducible with ffplay or also with ffmpeg? ffplay depends on an external library that is known to contain bugs and ffplay issues are generally far more difficult to reproduce, please only report ffplay problems if they are not reproducible with ffmpeg.

Would encoding the stream to an mp3 be enough proof?

ffmpeg -i URL -acodec libmp3lame -q:a 2 -f mp3 - > test.mp3

With that command I get the following output:

ffmpeg -i "URL" -acodec libmp3lame -q:a 2 -f mp3 - > test.mp3
ffmpeg version 2.3.git Copyright (c) 2000-2014 the FFmpeg developers
  built on Aug 11 2014 10:26:03 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-ffplay --enable-libfdk-aac --enable-openssl
  libavutil      54.  1.100 / 54.  1.100
  libavcodec     56.  0.100 / 56.  0.100
  libavformat    56.  0.100 / 56.  0.100
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  0.100 /  5.  0.100
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  0.100 /  1.  0.100
  libpostproc    53.  0.100 / 53.  0.100
Input #0, matroska,webm, from 'URL':
  Metadata:
    encoder         : google
  Duration: 00:04:34.56, start: 0.000000, bitrate: 130 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
Output #0, mp3, to 'pipe:':
  Metadata:
    TSSE            : Lavf56.0.100
    Stream #0:0(eng): Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default)
    Metadata:
      encoder         : Lavc56.0.100 libmp3lame
Stream mapping:
  Stream #0:0 -> #0:0 (vorbis (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
size=    6368kB time=00:04:34.60 bitrate= 190.0kbits/s
video:0kB audio:6368kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000675%

It does not seem to be an issue when encoding.

comment:5 by viperfx, 10 years ago

Resolution: fixed
Status: newclosed

I was using OpenSSL on 1.0.1g on iOS. Compiling FFmpeg (HEAD) with the latest openssl (1.0.1i) seems to have fixed it for me on iOS.

comment:6 by Carl Eugen Hoyos, 10 years ago

Resolution: fixedinvalid
Version: 2.2.4git-master

comment:7 by viperfx, 10 years ago

Resolution: invalid
Status: closedreopened

It seems that the issue is not fixed. After some extended testing I still get this error.
I am using FFmpeg (HEAD) with the latest openssl (1.0.1i).

comment:8 by Carl Eugen Hoyos, 10 years ago

Then please provide your ffmpeg command line including complete, uncut console output.

in reply to:  8 comment:9 by viperfx, 10 years ago

Replying to cehoyos:

Then please provide your ffmpeg command line including complete, uncut console output.

Using which command?

Version 0, edited 10 years ago by viperfx (next)

comment:10 by Carl Eugen Hoyos, 10 years ago

Is the problem only reproducible on iOS?

in reply to:  10 comment:11 by viperfx, 10 years ago

Replying to cehoyos:

Is the problem only reproducible on iOS?

Well on command line I was not able to reproduce it, when I encoded the file to another format. On iOS, yes I that error occurs sometimes towards the end of a playback.

comment:12 by Carl Eugen Hoyos, 10 years ago

If the problem is reproducible with ffplay but not ffmpeg, please provide the ffplay command line (current FFmpeg git head) together with the complete uncut console output.

comment:13 by viperfx, 10 years ago

Here is the flags I compile ffmpeg with for iOS. I am using the latest snapshot and using openssl v1.0.1i

./configure --disable-programs --disable-shared --enable-static --enable-pic --enable-small --enable-openssl ${DEBUG_CONFIG_ARGS} \
        --disable-decoders --enable-decoder=aac --enable-decoder=h264 --enable-decoder=vorbis \
        --disable-encoders --enable-encoder=aac \
        --disable-demuxers --enable-demuxer=aac --enable-demuxer=mov --enable-demuxer=matroska --enable-demuxer=h264 \
        --disable-muxers --enable-muxer=mov --enable-muxer=mp4 --enable-muxer=hls --enable-muxer=h264 \
        --disable-filters --disable-doc

Here is the output using ffplay

$ ffplay "https://r3---sn-u5a3u5a3-ajtz.googlevideo.com/videoplayback?gcr=gb&upn=GSnTpgPXqh4&source=youtube&fexp=902408%2C904724%2C923346%2C927622%2C931983%2C934024%2C934030%2C941415%2C946012&mws=yes&lmt=1394439266170970&expire=1407797900&dur=240.621&ms=au&ipbits=0&sver=3&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Crequiressl%2Csource%2Cupn%2Cexpire&mv=m&mt=1407776233&key=yt5&gir=yes&requiressl=yes&ip=85.210.155.249&itag=171&clen=3264561&mm=31&id=o-AI6SFCI3O9ZAesd5gmWqRO0Z7xJDcKz3GTFV22GsNZki&signature=E514B8F316DB6DC334366F0EAD65C140724E451D.EB6D203C0F267800F6ED711D67FB878BF745732B&ratebypass=yes"
ffplay version 2.3.git Copyright (c) 2003-2014 the FFmpeg developers
  built on Aug 11 2014 10:26:03 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-ffplay --enable-libfdk-aac --enable-openssl
  libavutil      54.  1.100 / 54.  1.100
  libavcodec     56.  0.100 / 56.  0.100
  libavformat    56.  0.100 / 56.  0.100
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  0.100 /  5.  0.100
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  0.100 /  1.  0.100
  libpostproc    53.  0.100 / 53.  0.100
Input #0, matroska,webm, from 'https://r3---sn-u5a3u5a3-ajtz.googlevideo.com/videoplayback?gcr=gb&upn=GSnTpgPXqh4&source=youtube&fexp=902408%2C904724%2C923346%2C927622%2C931983%2C934024%2C934030%2C941415%2C946012&mws=yes&lmt=1394439266170970&expire=1407797900&dur=240.621&ms=au&ipbits=0&sver=3&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Crequiressl%2Csource%2Cupn%2Cexpire&mv=m&mt=1407776233&key=yt5&gir=yes&requiressl=yes&ip=85.210.155.249&itag=171&clen=3264561&mm=31&id=o-AI6SFCI3O9ZAesd5gmWqRO0Z7xJDcKz3GTFV22GsNZki&signature=E514B8F316DB6DC334366F0EAD65C140724E451D.EB6D203C0F267800F6ED711D67FB878BF745732B&ratebypass=yes':
  Metadata:
    encoder         : google
  Duration: 00:04:00.62, start: 0.000000, bitrate: 108 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
[tls @ 0x7fce00737f40] error:00000000:lib(0):func(0):reason(0)0/0

comment:14 by Carl Eugen Hoyos, 10 years ago

I see a similar problem with tls, -autoexit didn't work:

$ ffplay -autoexit "https://r4---sn-bvvbax-8pxe.googlevideo.com/videoplayback?itag=171&mws=yes&mt=1407784028&clen=3517500&sver=3&lmt=1392577165969919&signature=0D0BD8B88F84BA006DA9BDEC7FEB946D978D56F0.6E39194558775D891DBCF30EB50D6E166EBF0F12&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Crequiressl%2Csource%2Cupn%2Cexpire&ipbits=0&mv=m&ms=au&requiressl=yes&source=youtube&fexp=902408%2C927622%2C927894%2C930657%2C931983%2C934024%2C934030%2C937432%2C943908%2C945035%2C946013&gcr=at&upn=3KY97TSgiI0&dur=252.222&ip=84.114.78.119&mm=31&gir=yes&key=yt5&expire=1407805695&id=o-APBb1hr8cgnHFmIl1jqTZtUgs6HFFest6fIF4RFfToUB&ratebypass=yes"
ffplay version N-65523-g9a16214 Copyright (c) 2003-2014 the FFmpeg developers
  built on Aug 11 2014 20:58:53 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gnutls
  libavutil      54.  1.100 / 54.  1.100
  libavcodec     56.  0.100 / 56.  0.100
  libavformat    56.  0.100 / 56.  0.100
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  0.100 /  5.  0.100
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  0.100 /  1.  0.100
Input #0, matroska,webm, from 'https://r4---sn-bvvbax-8pxe.googlevideo.com/videoplayback?itag=171&mws=yes&mt=1407784028&clen=3517500&sver=3&lmt=1392577165969919&signature=0D0BD8B88F84BA006DA9BDEC7FEB946D978D56F0.6E39194558775D891DBCF30EB50D6E166EBF0F12&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Crequiressl%2Csource%2Cupn%2Cexpire&ipbits=0&mv=m&ms=au&requiressl=yes&source=youtube&fexp=902408%2C927622%2C927894%2C930657%2C931983%2C934024%2C934030%2C937432%2C943908%2C945035%2C946013&gcr=at&upn=3KY97TSgiI0&dur=252.222&ip=84.114.78.119&mm=31&gir=yes&key=yt5&expire=1407805695&id=o-APBb1hr8cgnHFmIl1jqTZtUgs6HFFest6fIF4RFfToUB&ratebypass=yes':
  Metadata:
    encoder         : google
  Duration: 00:04:12.22, start: 0.000000, bitrate: 111 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
[tls @ 0x7f0408002d80] The TLS connection was non-properly terminated.
[tls @ 0x7f0408002d80] The specified session has been invalidated for some reason.
 269.22 M-A:  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

in reply to:  14 comment:15 by viperfx, 10 years ago

Replying to cehoyos:

I see a similar problem with tls, -autoexit didn't work:

$ ffplay -autoexit "https://r4---sn-bvvbax-8pxe.googlevideo.com/videoplayback?itag=171&mws=yes&mt=1407784028&clen=3517500&sver=3&lmt=1392577165969919&signature=0D0BD8B88F84BA006DA9BDEC7FEB946D978D56F0.6E39194558775D891DBCF30EB50D6E166EBF0F12&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Crequiressl%2Csource%2Cupn%2Cexpire&ipbits=0&mv=m&ms=au&requiressl=yes&source=youtube&fexp=902408%2C927622%2C927894%2C930657%2C931983%2C934024%2C934030%2C937432%2C943908%2C945035%2C946013&gcr=at&upn=3KY97TSgiI0&dur=252.222&ip=84.114.78.119&mm=31&gir=yes&key=yt5&expire=1407805695&id=o-APBb1hr8cgnHFmIl1jqTZtUgs6HFFest6fIF4RFfToUB&ratebypass=yes"
ffplay version N-65523-g9a16214 Copyright (c) 2003-2014 the FFmpeg developers
  built on Aug 11 2014 20:58:53 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gnutls
  libavutil      54.  1.100 / 54.  1.100
  libavcodec     56.  0.100 / 56.  0.100
  libavformat    56.  0.100 / 56.  0.100
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  0.100 /  5.  0.100
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  0.100 /  1.  0.100
Input #0, matroska,webm, from 'https://r4---sn-bvvbax-8pxe.googlevideo.com/videoplayback?itag=171&mws=yes&mt=1407784028&clen=3517500&sver=3&lmt=1392577165969919&signature=0D0BD8B88F84BA006DA9BDEC7FEB946D978D56F0.6E39194558775D891DBCF30EB50D6E166EBF0F12&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Crequiressl%2Csource%2Cupn%2Cexpire&ipbits=0&mv=m&ms=au&requiressl=yes&source=youtube&fexp=902408%2C927622%2C927894%2C930657%2C931983%2C934024%2C934030%2C937432%2C943908%2C945035%2C946013&gcr=at&upn=3KY97TSgiI0&dur=252.222&ip=84.114.78.119&mm=31&gir=yes&key=yt5&expire=1407805695&id=o-APBb1hr8cgnHFmIl1jqTZtUgs6HFFest6fIF4RFfToUB&ratebypass=yes':
  Metadata:
    encoder         : google
  Duration: 00:04:12.22, start: 0.000000, bitrate: 111 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
[tls @ 0x7f0408002d80] The TLS connection was non-properly terminated.
[tls @ 0x7f0408002d80] The specified session has been invalidated for some reason.
 269.22 M-A:  0.000 fd=   0 aq=    0KB vq=    0KB sq=    0B f=0/0

So this is a confirmed bug? Can the ticket be updated so someone may look into the issue?

comment:16 by klpu, 9 years ago

How about resolve this issue?

comment:17 by İsmail Dönmez, 9 years ago

I can reproduce with latest trunk on Linux with gnutls 3.4.8:

λ ffplay-head https://www.youtube.com/watch?v=SdaR8VBh_F0
ffplay version N-78269-gc1b23e1 Copyright (c) 2003-2016 the FFmpeg developers

built with gcc 5 (SUSE Linux)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' --disable-htmlpages --enable-pic --disable-stripping --disable-shared --enable-static --enable-runtime-cpudetect --enable-gpl --disable-openssl --enable-avresample --enable-libcdio --enable-libdc1394 --enable-gnutls --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libvorbis --enable-libvpx --enable-libwebp --enable-pic --enable-pthreads --enable-vaapi --enable-vdpau --disable-decoder=dca --enable-libdcadec --enable-libmp3lame --enable-version3 --enable-libx264 --enable-libx265 --enable-x11grab
libavutil 55. 17.100 / 55. 17.100
libavcodec 57. 24.101 / 57. 24.101
libavformat 57. 24.100 / 57. 24.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 28.100 / 6. 28.100
libavresample 3. 0. 0 / 3. 0. 0
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100

[tls @ 0x292ccc0] The TLS connection was non-properly terminated.
https://www.youtube.com/watch?v=SdaR8VBh_F0: Input/output error

comment:18 by Carl Eugen Hoyos, 8 years ago

Component: undeterminedavformat
Keywords: tls http mkv added; openssl webm removed
Reproduced by developer: set
Resolution: fixed
Status: reopenedclosed

Fixed by Martin Storsjö since 9f7a2ecb (2.4).

Note: See TracTickets for help on using tickets.